Data Structures | |
| struct | DynamicStack |
Defines | |
| #define | DynStk_Top(DS) ( (DS).stack.top ) |
| #define | DynStk_Base(DS) ( (DS).stack.base ) |
| #define | DynStk_Ceiling(DS) ( (DS).stack.ceiling ) |
| #define | DynStk_FrameSize(DS) ( (DS).size.frame ) |
| #define | DynStk_InitSize(DS) ( (DS).size.stackinit ) |
| #define | DynStk_CurSize(DS) ( (DS).size.stackcur ) |
| #define | DynStk_Name(DS) ( (DS).name ) |
| #define | DynStk_NumFrames(DS) (((char *)DynStk_Top(DS) - (char *)DynStk_Base(DS)) / DynStk_FrameSize(DS)) |
| #define | DynStk_NextFrame(DS) (void *)((char *)DynStk_Top(DS) + DynStk_FrameSize(DS)) |
| #define | DynStk_PrevFrame(DS) (void *)((char *)DynStk_Top(DS) - DynStk_FrameSize(DS)) |
| #define | DynStk_Init(DS, NumElements, FrameType, Desc) dsInit(DS,NumElements,sizeof(FrameType),Desc) |
| #define | DynStk_ResetTOS(DS) DynStk_Top(DS) = DynStk_Base(DS) |
| #define | DynStk_IsEmpty(DS) ( DynStk_Top(DS) == DynStk_Base(DS) ) |
| #define | DynStk_IsFull(DS) ( DynStk_Top(DS) >= DynStk_Ceiling(DS) ) |
| #define | DynStk_WillOverflow(DS, NFrames) |
| #define | DynStk_ExpandIfFull(DS) |
| #define | DynStk_ExpandIfOverflow(DS, N) |
| #define | DynStk_Push(DS, Frame) |
| #define | DynStk_Pop(DS, Frame) |
| #define | DynStk_Peek(DS, Frame) |
| #define | DynStk_BlindPush(DS, Frame) |
| #define | DynStk_BlindPop(DS, Frame) |
| #define | DynStk_BlindPeek(DS, Frame) Frame = DynStk_PrevFrame(DS) |
Functions | |
| void | dsPrint (DynamicStack, char *) |
| void | dsInit (DynamicStack *, size_t, size_t, char *) |
| void | dsExpand (DynamicStack *, int) |
| void | dsShrink (DynamicStack *) |
|
|
|
|
|
|
|
|
Value: { \
DynStk_Top(DS) = DynStk_PrevFrame(DS); \
Frame = DynStk_Top(DS); \
}
|
|
|
Value: { \
Frame = DynStk_Top(DS); \
DynStk_Top(DS) = DynStk_NextFrame(DS); \
}
|
|
|
|
|
|
|
|
|
Value: { \
if ( DynStk_IsFull(DS) ) \
dsExpand(&(DS),1); \
}
|
|
|
Value: { \
if ( DynStk_WillOverflow(DS,N) ) \
dsExpand(&(DS),N); \
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: { \
if ( ! DynStk_IsEmpty(DS) ) \
DynStk_BlindPeek(DS,Frame); \
else \
Frame = NULL; \
}
|
|
|
Value: { \
if ( ! DynStk_IsEmpty(DS) ) \
DynStk_BlindPop(DS,Frame) \
else \
Frame = NULL; \
}
|
|
|
|
|
|
Value: { \
DynStk_ExpandIfFull(DS); \
DynStk_BlindPush(DS,Frame); \
}
|
|
|
|
|
|
|
|
|
Value: ( (char *)DynStk_Top(DS) + NFrames * DynStk_FrameSize(DS) \ > (char *)DynStk_Ceiling(DS) ) |
|
||||||||||||
|
|
|
||||||||||||||||||||
|
|
|
||||||||||||
|
|
|
|
|
1.4.5