00001 /* 00002 @file dkcStack.h 00003 @auther 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); 00081 00082 00083 DKC_EXTERN int WINAPI dkcStackSerialize(const DKC_STACK *ptr,DKC_SERIALIZE *se); 00084 00085 DKC_EXTERN DKC_STACK* WINAPI dkcAllocStackDeserialize(DKC_DESERIALIZE *se); 00086 00087 00088 #endif //end of include once