#include "dkcOSIndependent.h"#include "dkcSerialize.h"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(), と dkcFree2TreeRoot().
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(), と NULL. 参照元 dkcAllocArrayOneByOne(), dkcFree2TreeRoot(), と dkcFreeArrayOneByOne().
|
|
|
許容量(すでに確保された領域の大きさ)
dkcStack.c の 146 行で定義されています。 参照先 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(), 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, と 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_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, と 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 }
|
1.3.6