#include "dkcOSIndependent.h"
#include "dkcSerialize.h"
#include "dkcStack.c"
dkcStack.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_Stack |
型定義 | |
typedef dkc_Stack | DKC_STACK |
関数 | |
DKC_EXTERN DKC_STACK *WINAPI | dkcAllocStack (size_t numoff__, size_t offsetof__) |
DKC_EXTERN int WINAPI | dkcFreeStack (DKC_STACK **ptr) |
DKC_EXTERN void WINAPI | dkcStackPop (DKC_STACK *ptr) |
DKC_EXTERN int WINAPI | dkcStackTop (DKC_STACK *ptr, void *) |
DKC_EXTERN size_t WINAPI | dkcStackSize (DKC_STACK *ptr) |
DKC_EXTERN BOOL WINAPI | dkcStackIsEmpty (DKC_STACK *ptr) |
DKC_EXTERN int WINAPI | dkcStackPush (DKC_STACK *ptr, const void *) |
DKC_EXTERN int WINAPI | dkcStackDynamicPush (DKC_STACK *ptr, const void *) |
DKC_EXTERN void WINAPI | dkcStackClear (DKC_STACK *ptr) |
DKC_EXTERN size_t WINAPI | dkcStackCapacity (DKC_STACK *ptr) |
許容量(すでに確保された領域の大きさ) | |
DKC_EXTERN size_t WINAPI | dkcStackRestSize (DKC_STACK *ptr) |
残り領域 | |
DKC_EXTERN int WINAPI | dkcStackSerialize (const DKC_STACK *ptr, DKC_SERIALIZE *se) |
DKC_EXTERN DKC_STACK *WINAPI | dkcAllocStackDeserialize (DKC_DESERIALIZE *se) |
|
|
dkcStack.c の 12 行で定義されています。 参照先 BYTE, DKC_STACK, dkcAllocate(), dkcFree(), dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, dkc_Stack::mSize, と NULL. 参照元 dkcAllocArrayOneByOne(), と dkcAllocStackDeserialize().
00012 { 00013 DKC_STACK *p; 00014 size_t size = numof__ * offsetof__; 00015 if(0==size) return NULL; 00016 p = (DKC_STACK *)dkcAllocate(sizeof(DKC_STACK)); 00017 if(NULL==p) return NULL; 00018 p->mBuffer = (BYTE *)dkcAllocate(size); 00019 00020 if(NULL==p->mBuffer) goto Error; 00021 00022 p->mCount = 0; 00023 p->mSize = size; 00024 p->mOffsetOf = offsetof__; 00025 00026 return p; 00027 Error: 00028 dkcFree((void **)&p); 00029 return NULL; 00030 } |
|
dkcStack.c の 163 行で定義されています。 参照先 DKC_DESERIALIZE, DKC_STACK, dkcAllocStack(), dkcDeserializeRead(), dkcmNOT_ASSERT, edkcSerializeIDStack, dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, dkc_Stack::mSize, と NULL.
00164 { 00165 DKC_STACK *p; 00166 DKC_STACK t; 00167 size_t read; 00168 int id; 00169 00170 dkcDeserializeRead(se,&id,sizeof(id),&read); 00171 if(id != edkcSerializeIDStack) 00172 { 00173 return NULL; 00174 } 00175 dkcDeserializeRead(se,&t,sizeof(t),&read); 00176 00177 p = dkcAllocStack(t.mSize,t.mOffsetOf); 00178 if(NULL==p) return NULL; 00179 00180 00181 dkcDeserializeRead(se,p->mBuffer,p->mSize,&read); 00182 p->mCount = t.mCount; 00183 p->mOffsetOf = t.mOffsetOf; 00184 00185 00186 dkcmNOT_ASSERT(read != p->mSize); 00187 00188 return p; 00189 } |
|
dkcStack.c の 32 行で定義されています。 参照先 DKC_STACK, dkcFree(), edk_ArgumentException, と NULL. 参照元 dkcAllocArrayOneByOne(), と dkcFreeArrayOneByOne().
|
|
許容量(すでに確保された領域の大きさ)
dkcStack.c の 146 行で定義されています。 参照先 DKC_INLINE, DKC_STACK, dkc_Stack::mOffsetOf, と dkc_Stack::mSize. 参照元 dkcStackRestSize().
|
|
Stack内のカウンタを0に戻して、スタックを事実上クリアする。 dkcStack.c の 133 行で定義されています。 参照先 DKC_STACK, と dkc_Stack::mCount.
00133 { 00134 //memset(ptr->mBuffer,0,ptr->mSize); 00135 ptr->mCount = 0; 00136 } |
|
dkcStack.c の 99 行で定義されています。 参照先 BYTE, DKC_STACK, dkcReallocate(), dkcReallocateSizeFunction(), DKUTIL_FAILED, edk_FAILED, edk_SUCCEEDED, dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, と dkc_Stack::mSize. 参照元 BufferResize(), と dkcArrayOneByOnePop().
00100 { 00101 BYTE *tp; 00102 size_t point; 00103 00104 void *NewPtr; 00105 size_t want_size; 00106 //dkcmNOT_ASSERT(NULL==ptr); 00107 00108 point = ptr->mCount * ptr->mOffsetOf; 00109 00110 //もう限界判定 00111 if(ptr->mSize <= point ){ 00112 //メモリ再確保 00113 want_size = dkcReallocateSizeFunction(ptr->mSize,ptr->mOffsetOf); 00114 if(DKUTIL_FAILED( 00115 dkcReallocate(&NewPtr,want_size,(void **)&ptr->mBuffer) 00116 )){ 00117 return edk_FAILED; 00118 } 00119 ptr->mBuffer = (BYTE *)NewPtr; 00120 ptr->mSize = want_size; 00121 00122 } 00123 tp = ptr->mBuffer; 00124 00125 memcpy(&tp[point],data,ptr->mOffsetOf); 00126 00127 ptr->mCount ++; 00128 00129 return edk_SUCCEEDED; 00130 00131 00132 } |
|
dkcStack.c の 142 行で定義されています。 参照先 BOOL, DKC_STACK, と dkcStackSize(). 参照元 dkcArrayOneByOnePushSafe().
00142 { 00143 return (dkcStackSize(ptr)==0); 00144 } |
|
dkcStack.c の 40 行で定義されています。 参照先 DKC_STACK, dkcmNOT_ASSERT, と NULL. 参照元 setData().
00040 { 00041 dkcmNOT_ASSERT(NULL==ptr); 00042 00043 //もう無い判定 00044 if(ptr->mCount <= 0){ 00045 return ; 00046 } 00047 00048 ptr->mCount --; 00049 00050 return; 00051 } |
|
\ dkcStack.c の 78 行で定義されています。 参照先 BYTE, DKC_STACK, dkcmNOT_ASSERT, edk_FAILED, edk_SUCCEEDED, と NULL.
00079 { 00080 BYTE *tp; 00081 size_t point; 00082 dkcmNOT_ASSERT(NULL==ptr); 00083 00084 point = ptr->mCount * ptr->mOffsetOf; 00085 //もう限界判定 00086 if(ptr->mSize <= point ){ 00087 return edk_FAILED; 00088 } 00089 tp = ptr->mBuffer; 00090 00091 memcpy(&tp[point],data,ptr->mOffsetOf); 00092 00093 ptr->mCount ++; 00094 00095 return edk_SUCCEEDED; 00096 00097 } |
|
残り領域
dkcStack.c の 150 行で定義されています。 参照先 DKC_INLINE, DKC_STACK, dkcStackCapacity(), と dkcStackSize(). 参照元 dkcArrayOneByOneRestSize().
00150 { 00151 return dkcStackCapacity(ptr) - dkcStackSize(ptr); 00152 } |
|
dkcStack.c の 154 行で定義されています。 参照先 DKC_SERIALIZE, DKC_STACK, dkcmNOT_ASSERT, dkcSerializeWrite(), edkcSerializeIDStack, と NULL.
00155 { 00156 int id = edkcSerializeIDStack; 00157 dkcmNOT_ASSERT(NULL==ptr); 00158 dkcSerializeWrite(se,&id,sizeof(id)); 00159 dkcSerializeWrite(se,ptr,sizeof(DKC_STACK)); 00160 return dkcSerializeWrite(se,ptr->mBuffer,ptr->mSize); 00161 } |
|
dkcStack.c の 138 行で定義されています。 参照先 DKC_STACK, と dkc_Stack::mCount. 参照元 dkcArrayOneByOneSize(), dkcStackIsEmpty(), と dkcStackRestSize().
00138 { 00139 return ptr->mCount; 00140 } |
|
dkcStack.c の 53 行で定義されています。 参照先 BYTE, DKC_STACK, dkcmNOT_ASSERT, edk_FAILED, edk_SUCCEEDED, と NULL. 参照元 setData().
00054 { 00055 00056 BYTE *tp; 00057 size_t point; 00058 dkcmNOT_ASSERT(NULL==ptr); 00059 00060 point = ptr->mOffsetOf * (ptr->mCount-1);//mCountの-1の所のアドレスに存在するデータだから・・・。 00061 00062 //もう無い判定 00063 if(ptr->mCount <= 0){ 00064 return edk_FAILED; 00065 } 00066 00067 00068 tp = ptr->mBuffer; 00069 00070 memcpy(get_data,&tp[point],ptr->mOffsetOf); 00071 00072 //ptr->mCount --; 00073 00074 return edk_SUCCEEDED; 00075 00076 } |