📄 mstack.c
字号:
/*
* Copyright (c) 2000-2008
* Author: Weiming Zhou
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation.
*/
#ifdef _WIN32
#include <windows.h>
#endif
#include "CapiGlobal.h"
#include "Stack.h"
#include "MStack.h"
/** 多任务栈的创建函数
@param UINT uStackSize - 栈的大小
@return MSTACK * - 成功返回栈指针,失败返回NULL
*/
MSTACK * MStack_Create(UINT uStackSize)
{
MSTACK *pMStack = (MSTACK *)malloc(sizeof(MSTACK));
if ( pMStack != NULL )
{
pMStack->pStack = Stack_Create(uStackSize);
if ( pMStack->pStack != NULL )
{
/* 创建锁 */
pMStack->pLock = LockCreate();
if ( pMStack->pLock != NULL )
{
return pMStack;
}
free(pMStack->pStack);
}
free(pMStack);
}
return NULL;
}
/** 多任务栈的释放函数
@param MSTACK * pMStack - 栈指针
@param DESTROYFUNC DestroyFunc - 数据释放回调函数
@return void - 无
*/
void MStack_Destroy(MSTACK * pMStack, DESTROYFUNC DestroyFunc)
{
if ( pMStack != NULL )
{
Lock(pMStack->pLock);
Stack_Destroy(pMStack->pStack, DestroyFunc);
LockClose(pMStack->pLock);
free(pMStack);
}
}
/** 多任务栈的弹出操作函数
@param MSTACK * pMStack - 栈指针
@return void * - 弹出的数据指针
*/
void * MStack_Pop( MSTACK * pMStack )
{
void *pData;
Lock(pMStack->pLock);
pData = Stack_Pop(pMStack->pStack);
Unlock(pMStack->pLock);
return pData;
}
/** 栈的压入操作函数
@param MSTACK * pMStack - 栈指针
@param void *pData - 数据指针
@return INT - CAPI_SUCCESS表示成功,CAIP_FAILED表示失败
*/
INT MStack_Push( MSTACK * pMStack, void *pData )
{
INT nRet;
Lock(pMStack->pLock);
nRet = Stack_Push(pMStack->pStack, pData);
Unlock(pMStack->pLock);
return nRet;
}
/** 判断栈是否是空的
@param MSTACK *pMStack - 栈指针
@return INT - 0表示为空,1表示非空
*/
INT MStack_IsEmpty( MSTACK *pMStack )
{
INT nRet;
Lock(pMStack->pLock);
nRet = Stack_IsEmpty(pMStack->pStack);
Unlock(pMStack->pLock);
return nRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -