dynamic_stack.h File Reference


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 *)

Define Documentation

#define DynStk_Base DS   )     ( (DS).stack.base )
 

#define DynStk_BlindPeek DS,
Frame   )     Frame = DynStk_PrevFrame(DS)
 

#define DynStk_BlindPop DS,
Frame   ) 
 

Value:

{               \
   DynStk_Top(DS) = DynStk_PrevFrame(DS);       \
   Frame = DynStk_Top(DS);                      \
 }

#define DynStk_BlindPush DS,
Frame   ) 
 

Value:

{               \
   Frame = DynStk_Top(DS);                      \
   DynStk_Top(DS) = DynStk_NextFrame(DS);       \
 }

#define DynStk_Ceiling DS   )     ( (DS).stack.ceiling )
 

#define DynStk_CurSize DS   )     ( (DS).size.stackcur )
 

#define DynStk_ExpandIfFull DS   ) 
 

Value:

{               \
   if ( DynStk_IsFull(DS) )                     \
     dsExpand(&(DS),1);                         \
 }

#define DynStk_ExpandIfOverflow DS,
 ) 
 

Value:

{               \
   if ( DynStk_WillOverflow(DS,N) )             \
     dsExpand(&(DS),N);                         \
 }

#define DynStk_FrameSize DS   )     ( (DS).size.frame )
 

#define DynStk_Init DS,
NumElements,
FrameType,
Desc   )     dsInit(DS,NumElements,sizeof(FrameType),Desc)
 

#define DynStk_InitSize DS   )     ( (DS).size.stackinit )
 

#define DynStk_IsEmpty DS   )     ( DynStk_Top(DS) == DynStk_Base(DS) )
 

#define DynStk_IsFull DS   )     ( DynStk_Top(DS) >= DynStk_Ceiling(DS) )
 

#define DynStk_Name DS   )     ( (DS).name )
 

#define DynStk_NextFrame DS   )     (void *)((char *)DynStk_Top(DS) + DynStk_FrameSize(DS))
 

#define DynStk_NumFrames DS   )     (((char *)DynStk_Top(DS) - (char *)DynStk_Base(DS)) / DynStk_FrameSize(DS))
 

#define DynStk_Peek DS,
Frame   ) 
 

Value:

{                       \
   if ( ! DynStk_IsEmpty(DS) )                  \
     DynStk_BlindPeek(DS,Frame);                \
   else                                         \
     Frame = NULL;                              \
 }

#define DynStk_Pop DS,
Frame   ) 
 

Value:

{                       \
   if ( ! DynStk_IsEmpty(DS) )                  \
     DynStk_BlindPop(DS,Frame)                  \
   else                                         \
     Frame = NULL;                              \
 }

#define DynStk_PrevFrame DS   )     (void *)((char *)DynStk_Top(DS) - DynStk_FrameSize(DS))
 

#define DynStk_Push DS,
Frame   ) 
 

Value:

{                       \
   DynStk_ExpandIfFull(DS);                     \
   DynStk_BlindPush(DS,Frame);                  \
 }

#define DynStk_ResetTOS DS   )     DynStk_Top(DS) = DynStk_Base(DS)
 

#define DynStk_Top DS   )     ( (DS).stack.top )
 

#define DynStk_WillOverflow DS,
NFrames   ) 
 

Value:

( (char *)DynStk_Top(DS) + NFrames * DynStk_FrameSize(DS)       \
     > (char *)DynStk_Ceiling(DS) )


Function Documentation

void dsExpand DynamicStack ,
int 
 

void dsInit DynamicStack ,
size_t  ,
size_t  ,
char * 
 

void dsPrint DynamicStack  ,
char * 
 

void dsShrink DynamicStack  ) 
 


Generated on Wed Jul 26 13:26:53 2006 for XSB by  doxygen 1.4.5