00001 00019 #ifndef DKUTIL_C_ARRAY_ONEBYONE_H 00020 #define DKUTIL_C_ARRAY_ONEBYONE_H 00021 00022 #include "dkcOSIndependent.h" 00023 #include "dkcBuffer.h" 00024 #include "dkcStack.h" 00025 00029 typedef struct dkc_ArrayOneByOne{ 00031 DKC_BUFFER *mBuff; 00033 DKC_STACK *mStack; 00035 size_t mOffset; 00037 size_t mNum; 00039 size_t mExtNum; 00041 BYTE mFlag; 00042 00043 00044 }DKC_ARRAY_ONEBYONE; 00045 00046 enum{ 00048 edkcArrayOneByOneStatic = 0, 00050 edkcArrayOneByOneDynamic, 00051 }; 00059 DKC_EXTERN DKC_ARRAY_ONEBYONE * WINAPI dkcAllocArrayOneByOneStatic(size_t offset,size_t num); 00061 DKC_EXTERN DKC_ARRAY_ONEBYONE * WINAPI dkcAllocArrayOneByOneDynamic(size_t offset,size_t num,size_t ext_num); 00062 00064 DKC_EXTERN int WINAPI dkcFreeArrayOneByOne(DKC_ARRAY_ONEBYONE **pp); 00065 00067 DKC_EXTERN int WINAPI dkcArrayOneByOnePushSafe(DKC_ARRAY_ONEBYONE *,const void *data,size_t size); 00068 00072 00073 DKC_EXTERN int WINAPI dkcArrayOneByOnePush(DKC_ARRAY_ONEBYONE *,const void *data); 00074 00078 00079 DKC_EXTERN int WINAPI dkcArrayOneByOnePop(DKC_ARRAY_ONEBYONE *,int id); 00080 00086 DKC_EXTERN int WINAPI dkcArrayOneByOneReference(DKC_ARRAY_ONEBYONE *,int id,void *ref); 00087 00089 DKC_EXTERN size_t WINAPI dkcArrayOneByOneSize(DKC_ARRAY_ONEBYONE *); 00091 DKC_EXTERN size_t WINAPI dkcArrayOneByOneCapacity(DKC_ARRAY_ONEBYONE *); 00093 DKC_EXTERN size_t WINAPI dkcArrayOneByOneRestSize(DKC_ARRAY_ONEBYONE *p); 00095 DKC_EXTERN size_t WINAPI dkcArrayOneByOneOffset(DKC_ARRAY_ONEBYONE *); 00096 00097 00098 #ifndef DKUTIL_C_ARRAY_ONEBYONE_C 00099 # include "dkcArrayOneByOne.c" 00100 #endif 00101 00102 #endif //end of include once