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
00099
00100
00101
00102
00103
00104
00105 #endif //end of include once