00001 /* 00002 @file dkcStack.h 00003 @author d金魚 00004 @since 2004/3/xx 00005 @brief スタック構造 00006 */ 00007 00008 00009 #ifndef DKUTIL_C_STACK_H 00010 #define DKUTIL_C_STACK_H 00011 00012 00013 00014 #include "dkcOSIndependent.h" 00015 #include "dkcSerialize.h" 00016 /* 00017 typedef struct dkc_Stack{ 00019 BYTE *mBuffer; 00021 size_t mSize; 00023 size_t mRear; 00025 size_t mOffsetOf; 00026 }DKC_STACK; 00027 */ 00031 typedef struct dkc_Stack{ 00033 BYTE *mBuffer; 00035 size_t mSize; 00037 size_t mCount; 00039 size_t mOffsetOf; 00040 }DKC_STACK; 00041 00042 00043 00044 00050 DKC_EXTERN DKC_STACK * WINAPI dkcAllocStack(size_t numoff__,size_t offsetof__); 00057 DKC_EXTERN int WINAPI dkcFreeStack(DKC_STACK **ptr); 00058 00059 00064 DKC_EXTERN void WINAPI dkcStackPop(DKC_STACK *ptr); 00065 00066 DKC_EXTERN int WINAPI dkcStackTop(DKC_STACK *ptr,void *); 00067 00068 DKC_EXTERN size_t WINAPI dkcStackSize(DKC_STACK *ptr); 00069 00070 DKC_EXTERN BOOL WINAPI dkcStackIsEmpty(DKC_STACK *ptr); 00074 DKC_EXTERN int WINAPI dkcStackPush(DKC_STACK *ptr,const void *); 00075 00076 DKC_EXTERN int WINAPI dkcStackDynamicPush(DKC_STACK *ptr,const void *); 00080 DKC_EXTERN void WINAPI dkcStackClear(DKC_STACK *ptr); 00082 DKC_EXTERN size_t WINAPI dkcStackCapacity(DKC_STACK *ptr); 00084 DKC_EXTERN size_t WINAPI dkcStackRestSize(DKC_STACK *ptr); 00085 00086 DKC_EXTERN int WINAPI dkcStackSerialize(const DKC_STACK *ptr,DKC_SERIALIZE *se); 00087 00088 DKC_EXTERN DKC_STACK* WINAPI dkcAllocStackDeserialize(DKC_DESERIALIZE *se); 00089 00090 #if !defined( DKUTIL_C_STACK_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE) 00091 # include "dkcStack.c" 00092 #endif 00093 00094 #endif //end of include once