blob: d80e44080e0317ee2405355ccc40b3420f43b65a [file] [log] [blame]
#include "com_define.h"
#include "com_tag.h"
#include "com_dbg.h"
MV_VOID Tag_Init( PTag_Stack pTagStack, MV_U16 size )
{
MV_U16 i;
MV_DASSERT( size == pTagStack->Size );
pTagStack->Top = size;
pTagStack->TagStackType = FILO_TAG;
pTagStack->PtrOut = 0;
for ( i=0; i<size; i++ )
{
pTagStack->Stack[i] = size-1-i;
}
}
MV_VOID Tag_Init_FIFO( PTag_Stack pTagStack, MV_U16 size )
{
MV_U16 i;
MV_DASSERT( size == pTagStack->Size );
pTagStack->Top = size;
pTagStack->TagStackType = FIFO_TAG;
pTagStack->PtrOut = 0;
for ( i=0; i<size; i++ )
{
pTagStack->Stack[i] = i;
}
}
MV_U16 Tag_GetOne(PTag_Stack pTagStack)
{
MV_U16 nTag;
MV_DASSERT( pTagStack->Top>0 );
if(pTagStack->TagStackType==FIFO_TAG)
{
nTag = pTagStack->Stack[pTagStack->PtrOut++];
if(pTagStack->PtrOut>=pTagStack->Size)
pTagStack->PtrOut=0;
pTagStack->Top--;
return nTag;
}
else
return pTagStack->Stack[--pTagStack->Top];
}
MV_VOID Tag_ReleaseOne(PTag_Stack pTagStack, MV_U16 tag)
{
MV_DASSERT( pTagStack->Top<pTagStack->Size );
if(pTagStack->TagStackType==FIFO_TAG)
{
pTagStack->Stack[(pTagStack->PtrOut+pTagStack->Top)%pTagStack->Size] = tag;
pTagStack->Top++;
}
else
pTagStack->Stack[pTagStack->Top++] = tag;
}
MV_BOOLEAN Tag_IsEmpty(PTag_Stack pTagStack)
{
if ( pTagStack->Top==0 )
{
return MV_TRUE;
}
return MV_FALSE;
}