#include "dkcOSIndependent.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 | dkcStackPointer (DKC_STACK *ptr) |
スタックのポインタを得る。 | |
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) |
残り領域 |
|
スタック構造体 |
|
dkcStack.c の 12 行で定義されています。 参照先 BYTE, dkcAllocate(), dkcFree(), dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, dkc_Stack::mSize, と NULL. 参照元 dkcAllocArrayOneByOne(), dkcFree2TreeRoot(), と RegNFA_Construct(). 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 の 32 行で定義されています。 参照元 dkcAllocArrayOneByOne(), dkcFree2TreeRoot(), dkcFreeArrayOneByOne(), RegNFA_Construct(), と RegNFA_Destruct(). 00032 { 00033 if(NULL==ptr || *ptr==NULL || NULL==(*ptr)->mBuffer) 00034 return edk_ArgumentException; 00035 00036 dkcFree((void **)&((*ptr)->mBuffer)); 00037 return dkcFree((void **)ptr); 00038 }
|
|
許容量(すでに確保された領域の大きさ)
dkcStack.c の 146 行で定義されています。 参照先 dkc_Stack::mOffsetOf, と dkc_Stack::mSize. 参照元 dkcStackRestSize().
|
|
Stack内のカウンタを0に戻して、スタックを事実上クリアする。 dkcStack.c の 133 行で定義されています。 参照先 dkc_Stack::mCount. 00133 { 00134 //memset(ptr->mBuffer,0,ptr->mSize); 00135 ptr->mCount = 0; 00136 }
|
|
スタックにデータを詰めこむ(動的拡張版)
dkcStack.c の 99 行で定義されています。 参照先 BYTE, dkcmNOT_ASSERT, dkcReallocate(), dkcReallocateSizeFunction(), dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, dkc_Stack::mSize, と NULL. 参照元 BufferResize(), dkcArrayOneByOnePop(), RegNFA_check_and_push_stack(), RegNFA_gen_state(), と RegNFA_match_a4(). 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 行で定義されています。 参照先 dkcStackSize(). 参照元 dkcArrayOneByOnePushSafe(). 00142 { 00143 return (dkcStackSize(ptr)==0); 00144 }
|
|
スタックのポインタを得る。
dkcStack.c の 191 行で定義されています。 参照先 dkc_Stack::mBuffer. 参照元 RegNFA_add_e_transition(), RegNFA_add_transition_a5(), RegNFA_check_and_push_stack(), と RegNFA_match_a3(). 00191 { 00192 return ptr->mBuffer; 00193 }
|
|
スタックをポップする
dkcStack.c の 40 行で定義されています。 参照先 dkcmNOT_ASSERT, dkc_Stack::mCount, と NULL. 参照元 RegNFA_Destruct(), RegNFA_pop_stack(), と 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, dkcmNOT_ASSERT, dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, dkc_Stack::mSize, と 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 行で定義されています。 参照先 dkcStackCapacity(), と dkcStackSize(). 参照元 dkcArrayOneByOneRestSize(). 00150 { 00151 return dkcStackCapacity(ptr) - dkcStackSize(ptr); 00152 }
|
|
スタックに入っている要素数を返す
dkcStack.c の 138 行で定義されています。 参照先 dkc_Stack::mCount. 参照元 dkcArrayOneByOneSize(), dkcStackIsEmpty(), dkcStackRestSize(), RegNFA_check_and_push_stack(), RegNFA_Destruct(), と RegNFA_gen_state(). 00138 { 00139 return ptr->mCount; 00140 }
|
|
dkcStack.c の 53 行で定義されています。 参照先 BYTE, dkcmNOT_ASSERT, dkc_Stack::mBuffer, dkc_Stack::mCount, dkc_Stack::mOffsetOf, と NULL. 参照元 RegNFA_Destruct(), と 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 }
|