/*
** Command & Conquer Generals Zero Hour(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
/*****************************************************************************
** **
** Westwood Studios Pacific. **
** **
** Confidential Information **
** Copyright (C) 2000 - All Rights Reserved **
** **
******************************************************************************
** **
** Project: Dune Emperor **
** **
** Module: (_) **
** **
** Version: $ID$ **
** **
** File name: audlock.cpp **
** **
** Created by: 04/01/95 TR **
** **
** Description: **
** **
*****************************************************************************/
/*****************************************************************************
** Includes **
*****************************************************************************/
#include
#include
DBG_DECLARE_TYPE ( Lock )
/*****************************************************************************
** Externals **
*****************************************************************************/
/*****************************************************************************
** Defines **
*****************************************************************************/
/*****************************************************************************
** Private Types **
*****************************************************************************/
/*****************************************************************************
** Private Data **
*****************************************************************************/
/*****************************************************************************
** Public Data **
*****************************************************************************/
/*****************************************************************************
** Private Prototypes **
*****************************************************************************/
/*****************************************************************************
** Private Functions **
*****************************************************************************/
/*****************************************************************************
** Public Functions **
*****************************************************************************/
#ifdef _DEBUG
/******************************************************************/
/* */
/* */
/******************************************************************/
void LockInit ( volatile Lock *lock )
{
DBG_ASSERT ( lock != NULL);
LOCK_INIT(lock);
DBG_SET_TYPE ( lock, Lock );
}
/******************************************************************/
/* */
/* */
/******************************************************************/
void LockAcquire ( volatile Lock *lock)
{
DBG_ASSERT_TYPE ( lock, Lock);
DBG_ASSERT ( lock->count >= 0 );
LOCK_ACQUIRE (lock);
}
/******************************************************************/
/* */
/* */
/******************************************************************/
void LockRelease ( volatile Lock *lock)
{
DBG_ASSERT_TYPE ( lock, Lock);
DBG_ASSERT ( lock->count > 0 );
LOCK_RELEASE(lock);
}
/******************************************************************/
/* */
/* */
/******************************************************************/
int Locked ( volatile Lock *lock)
{
DBG_ASSERT_TYPE ( lock, Lock);
DBG_ASSERT ( lock->count >= 0 );
return LOCKED(lock);
}
#endif