#include "dkcSingleList.h"
#include "dkcStdio.h"
dkcSingleList.cのインクルード依存関係図
dkcSingleList.c で定義されています。
|
dkcSingleList.c の 7 行で定義されています。 |
|
シングルリスト領域を得る。
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 }
|
|
|
DKC_SINGLELISTをデリート (リンクしてあるリストも削除します。 一つだけの要素を削除したい場合はdkcEraseSingleListを使ってください。)
dkcSingleList.c の 43 行で定義されています。 参照先 dkcSingleListErase(), dkc_SingleList::mBuff, と NULL. 参照元 dkcFreeSingleList(). 00043 { 00044 DKC_SINGLELIST *p = NULL; 00045 if(NULL==ptr) return edk_ArgumentException; 00046 if(NULL==ptr->mBuff) return edk_ArgumentException; 00047 00048 for(p = ptr;;){ 00049 p = dkcSingleListErase(p); 00050 if(p==NULL) break; 00051 } 00052 return edk_SUCCEEDED; 00053 }
|
|
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 の 13 行で定義されています。 参照先 BYTE, dkc_memcpy(), dkcAllocate(), dkc_SingleList::mBuff, dkc_SingleList::mNext, dkc_SingleList::mSize, と NULL. 参照元 dkcAllocSingleList(). 00014 { 00015 void *p = NULL; 00016 if(NULL==ptr) return edk_ArgumentException; 00017 if(ptr->mBuff) return edk_ArgumentException; 00018 if(ptr->mNext) return edk_FAILED; 00019 00020 p = dkcAllocate(size); 00021 if(NULL==p) return edk_OutOfMemory; 00022 00023 if(NULL != data && 0 != size){ 00024 if(DKUTIL_FAILED(dkc_memcpy(p,size,data,size))){ 00025 return edk_FAILED; 00026 } 00027 } 00028 00029 ptr->mBuff = (BYTE *)p; 00030 ptr->mSize = size; 00031 ptr->mNext = NULL; 00032 00033 return edk_SUCCEEDED; 00034 }
|
|
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 }
|
|
dkcSingleList.c の 261 行で定義されています。 参照先 dkc_SingleList::mNext, と NULL. 00261 { 00262 DKC_SINGLELIST *it = top; 00263 for(;;) 00264 { 00265 if(NULL == it->mNext) break; 00266 it = it->mNext; 00267 00268 } 00269 return it; 00270 }
|
|
dkcSingleList.c の 275 行で定義されています。 参照先 dkc_SingleListObject::mBegin. 参照元 dkcAllocSingleListObject(). 00275 { 00276 //return p->mBegin->mNext;//beginには何も入っていないから。 00277 return p->mBegin; 00278 }
|
|
dkcSingleList.c の 312 行で定義されています。 参照先 dkc_SingleListObject::mBegin, と dkc_SingleListObject::mTail. 参照元 dkcAllocSingleListObject().
|
|
dkcSingleList.c の 282 行で定義されています。 参照先 NULL. 参照元 dkcAllocSingleListObject(). 00282 { 00283 return (NULL==p); 00284 }
|
|
dkcSingleList.c の 298 行で定義されています。 参照先 dkcSingleListErase(), dkc_SingleListObject::mBegin, dkc_SingleList::mNext, と dkc_SingleListObject::mTail. 参照元 dkcAllocSingleListObject(). 00299 { 00300 if(p->mTail == p->mBegin){ 00301 return;//何もない。 00302 }else if(p->mTail == target){ 00303 prev->mNext = dkcSingleListErase(target);//多分NULLが返ってくる。 00304 p->mTail = prev;//tail更新 00305 }else if(p->mBegin == target){ 00306 prev->mNext = dkcSingleListErase(target); 00307 p->mBegin = prev->mNext;//top 更新 00308 }else{ 00309 prev->mNext = dkcSingleListErase(target); 00310 } 00311 }
|
|
dkcSingleList.c の 285 行で定義されています。 参照元 dkcAllocSingleListObject(). 00285 { 00286 return p->mNext; 00287 }
|
|
dkcSingleList.c の 289 行で定義されています。 参照先 dkcSingleListInsert(), dkc_SingleList::mNext, dkc_SingleListObject::mTail, と TRUE. 参照元 dkcAllocSingleListObject(). 00290 { 00291 BOOL result; 00292 result = DKUTIL_SUCCEEDED_BOOL(dkcSingleListInsert(p->mTail,data,size)); 00293 if(TRUE==result){//成功だ! 00294 p->mTail = p->mTail->mNext;//tail更新 00295 } 00296 return result; 00297 }
|
|
dkcSingleList.c の 279 行で定義されています。 参照先 dkc_SingleListObject::mTail. 参照元 dkcAllocSingleListObject(). 00279 { 00280 return p->mTail; 00281 }
|