#include "dkcOSIndependent.h"
#include "dkcBuffer.h"
dkcSingleList.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_SingleList |
struct | dkc_SingleListObject |
マクロ定義 | |
#define | dkcSingleListDynamicSetBuffer(p, d, s) dkcSingleListSetBuffer(p,d,s) |
#define | dkcFreeSingleListBuffer(p) dkcFreeBuffer(p) |
型定義 | |
typedef dkc_SingleList | DKC_SINGLELIST |
typedef dkc_SingleListObject | DKC_SINGLELIST_OBJECT |
関数 | |
DKC_EXTERN DKC_SINGLELIST *WINAPI | dkcAllocSingleList (const void *data, size_t size) |
シングルリスト領域を得る。 | |
DKC_EXTERN int WINAPI | dkcFreeSingleList (DKC_SINGLELIST **ptr) |
dkcAllocNewSingleList()で確保したリスト領域と内部バッファを削除。dkcAllocNewSingleListと対。 | |
DKC_EXTERN int WINAPI | dkcSingleListInsert (DKC_SINGLELIST *ptr, const void *data, size_t size) |
DKC_EXTERN void WINAPI | dkcSingleListChain (DKC_SINGLELIST *ptr, DKC_SINGLELIST *nextp) |
DKC_EXTERN size_t WINAPI | dkcSingleListSize (DKC_SINGLELIST *top) |
DKC_EXTERN DKC_SINGLELIST *WINAPI | dkcSingleListErase (DKC_SINGLELIST *ptr) |
DKC_EXTERN int WINAPI | dkcSingleListGetBuffer (DKC_SINGLELIST *ptr, void *data, size_t size) |
DKC_EXTERN int WINAPI | dkcSingleListSetBuffer (DKC_SINGLELIST *ptr, const void *data, size_t size) |
DKC_EXTERN DKC_BUFFER *WINAPI | dkcAllocSingleListBuffer (const DKC_SINGLELIST *ptr) |
DKC_EXTERN DKC_SINGLELIST_OBJECT *WINAPI | dkcAllocSingleListObject (const void *data, size_t size) |
DKC_EXTERN int WINAPI | dkcFreeSingleListObject (DKC_SINGLELIST_OBJECT **) |
DKC_EXTERN int WINAPI | dkcGetSingleListBuffer (DKC_SINGLELIST *ptr, void *data, size_t size) |
dkcSingleList.h で定義されています。
|
dkcSingleList.h の 89 行で定義されています。 |
|
dkcSingleListSetBuffer()のWrapper dkcSingleList.h の 82 行で定義されています。 |
|
シングルリスト構造体 |
|
stlもどき(の、つもり・・・) |
|
シングルリスト領域を得る。
dkcSingleList.c の 56 行で定義されています。 参照先 dkcAllocate(), dkcFree(), dkcNewSingleList(), と NULL. 参照元 dkcAllocSingleListObject(), と dkcSingleListInsert(). 00056 { 00057 DKC_SINGLELIST *p = NULL; 00058 p = (DKC_SINGLELIST *)dkcAllocate(sizeof(DKC_SINGLELIST)); 00059 //p dkcAllocate(size); 00060 if(DKUTIL_FAILED(dkcNewSingleList(p,data,size))){ 00061 goto Error; 00062 } 00063 return p; 00064 Error: 00065 dkcFree((void **)&p); 00066 return NULL; 00067 }
|
|
dkcSingleList.c の 130 行で定義されています。 参照先 dkcAllocBuffer(), dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 00131 { 00132 DKC_BUFFER *p; 00133 if(NULL==ptr) return NULL; 00134 p = dkcAllocBuffer(ptr->mBuff,ptr->mSize); 00135 return p; 00136 }
|
|
|
dkcAllocNewSingleList()で確保したリスト領域と内部バッファを削除。dkcAllocNewSingleListと対。 DKC_SINGLELISTをデリート (リンクしてあるリストも削除します。 一つだけの要素を削除したい場合はdkcEraseSingleListを使ってください。)
dkcSingleList.c の 70 行で定義されています。 参照先 dkcDeleteSingleList(), と NULL. 参照元 dkcAllocSingleListObject(), と dkcFreeSingleListObject(). 00070 { 00071 if(NULL==ptr) return edk_FAILED; 00072 if(DKUTIL_FAILED(dkcDeleteSingleList(*ptr))){ 00073 return edk_FAILED; 00074 } 00075 //dkcFree((void **)*ptr); 00076 return edk_SUCCEEDED; 00077 }
|
|
dkcSingleList.c の 351 行で定義されています。 参照先 dkcFree(), dkcFreeSingleList(), と NULL. 00352 { 00353 if(NULL==p || NULL==*p) return edk_ArgumentException; 00354 dkcFreeSingleList(&(*p)->mBegin); 00355 return dkcFree((void **)p); 00356 }
|
|
dkcSingleList.c の 123 行で定義されています。 参照先 dkc_memcpy(), dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 00123 { 00124 if(NULL==ptr) return edk_ArgumentException; 00125 if(NULL==ptr->mBuff) return edk_FAILED; 00126 //if(ptr->mSize < size) return edk_BufferOverFlow; 00127 return dkc_memcpy(data,size,ptr->mBuff,ptr->mSize); 00128 }
|
|
dkcSingleList.c の 79 行で定義されています。 参照先 dkcmNOT_ASSERT, dkc_SingleList::mNext, と NULL. 00080 { 00081 DKC_SINGLELIST *t=NULL; 00082 00083 //バカヤロー条件 00084 dkcmNOT_ASSERT(NULL==ptr || NULL==nextp); 00085 00086 if(ptr->mNext) 00087 {//次へのポインタがあった場合 00088 t = ptr->mNext;//保存。 00089 ptr->mNext = nextp;//ぶち込む。 00090 nextp->mNext = t;//保存していたのをぶち込む 00091 00092 }else 00093 {//次へのポインタがなかった場合。 00094 ptr->mNext = nextp;//すぐぶち込む。 00095 } 00096 00097 00098 }
|
|
dkcSingleList.c の 112 行で定義されています。 参照先 dkcFree(), dkc_SingleList::mBuff, dkc_SingleList::mNext, と NULL. 参照元 dkcDeleteSingleList(), と dkcSLOEraseLogic(). 00112 { 00113 DKC_SINGLELIST *t = NULL; 00114 if(NULL==ptr) return NULL; 00115 //if(NULL==ptr->mBuff) return NULL;//メモリリークの原因になるかも? 00116 00117 dkcFree((void **)&ptr->mBuff); 00118 t = ptr->mNext; 00119 dkcFree((void **)&ptr); 00120 return t; 00121 }
|
|
リスト構造体内に保存しているデータをもらう dkcSingleList.c の 218 行で定義されています。 参照先 dkc_memcpy(), dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 参照元 dkcAllocSingleListObject(). 00219 { 00220 if(NULL==ptr || NULL==data || 0==size){ 00221 return edk_FAILED; 00222 } 00223 return dkc_memcpy(data,size,ptr->mBuff,ptr->mSize); 00224 }
|
|
dkcSingleList.c の 99 行で定義されています。 参照先 dkcAllocSingleList(), dkcmNOT_ASSERT, dkcSingleListChain(), dkc_SingleList::mNext, と NULL. 00099 { 00100 DKC_SINGLELIST *p; 00101 if(NULL==ptr) return edk_ArgumentException; 00102 00103 p = dkcAllocSingleList(data,size); 00104 if(NULL==p) return edk_FAILED; 00105 dkcmNOT_ASSERT(p->mNext);//念のため。 00106 00107 dkcSingleListChain(ptr,p); 00108 00109 return edk_SUCCEEDED; 00110 }
|
|
シングルリストの一つの要素が持っているバッファにデータを書き込む(上書きする) 足りないバッファサイズはリサイズされる。 dkcSingleList.c の 226 行で定義されています。 参照先 BYTE, dkc_memcpy(), dkcReallocate(), dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 参照元 dkcAllocSingleListObject(). 00227 { 00228 void *NewPtr; 00229 00230 if(NULL==ptr || NULL==data || 0==size){ 00231 return edk_FAILED; 00232 } 00233 00234 if(ptr->mSize < size){ 00235 if(DKUTIL_FAILED(dkcReallocate(&NewPtr,size,(void **)&(ptr->mBuff)))){ 00236 return edk_FAILED; 00237 } 00238 00239 ptr->mBuff =(BYTE *) NewPtr; 00240 ptr->mSize = size; 00241 } 00242 00243 if(DKUTIL_FAILED(dkc_memcpy(ptr->mBuff,ptr->mSize,data,size))){ 00244 return edk_FAILED; 00245 } 00246 00247 return edk_SUCCEEDED; 00248 }
|
|
dkcSingleList.c の 249 行で定義されています。 参照先 dkc_SingleList::mNext, と NULL. 00250 { 00251 DKC_SINGLELIST *it = top; 00252 size_t count = 0; 00253 for(;it != NULL;) 00254 { 00255 count++; 00256 it = it->mNext; 00257 } 00258 return count; 00259 }
|