#include "dkcSingleList.h"#include "dkcStdio.h"dkcSingleList.cのインクルード依存関係図

dkcSingleList.c で定義されています。
|
|
dkcSingleList.c の 7 行で定義されています。 |
|
||||||||||||
|
シングルリスト領域を得る。
dkcSingleList.c の 56 行で定義されています。 参照先 DKC_SINGLELIST, dkcAllocate(), dkcFree(), dkcNewSingleList(), と NULL. 参照元 dkcAllocSingleListDeserialize(), 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 行で定義されています。 参照先 DKC_BUFFER, DKC_SINGLELIST, 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_SERIALIZEから新しいSingleListを作る。.
dkcSingleList.c の 140 行で定義されています。 参照先 DKC_DESERIALIZE, DKC_SINGLELIST, dkcAllocSingleList(), dkcDeserializeRead(), dkcmNOT_ASSERT, dkcSingleListChain(), edkcSerializeIDSingleList, dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 参照元 dkcAllocSingleListObjectDeserialize().
00141 {
00142 DKC_SINGLELIST *p,*tp,*beginp;
00143 DKC_SINGLELIST t;
00144 size_t read,c,i;
00145 UINT sig;
00146
00147 dkcmNOT_ASSERT(NULL==se);
00148 DKUTIL_MEMZERO(&t,sizeof(t));
00149 //シグネチャを取得
00150 dkcDeserializeRead(se,&sig,sizeof(sig),&read);
00151 //そんな馬鹿な!判定
00152 if(read != sizeof(sig) || edkcSerializeIDSingleList != sig)
00153 {
00154 return NULL;
00155 }
00156 //数を取得
00157 dkcDeserializeRead(se,&c,sizeof(c),&read);
00158
00159 //構造体を取得。
00160 dkcDeserializeRead(se,&t,sizeof(DKC_SINGLELIST),&read);
00161 p = dkcAllocSingleList(NULL,t.mSize);
00162 //バッファ領域を取得。
00163 dkcDeserializeRead(se,p->mBuff,p->mSize,&read);
00164
00165 beginp = p;
00166 for(i=0;i<c;i++)
00167 {
00168 //構造体を取得。
00169 dkcDeserializeRead(se,&t,sizeof(DKC_SINGLELIST),&read);
00170 //保存。
00171 tp = p;
00172 //リスト生成
00173 p = dkcAllocSingleList(NULL,t.mSize);
00174 //バッファ領域を取得。
00175 dkcDeserializeRead(se,p->mBuff,p->mSize,&read);
00176 //チェイン
00177 dkcSingleListChain(tp,p);
00178
00179 }
00180 return beginp;
00181 }
|
|
||||||||||||
|
|
dkcSingleList.c の 357 行で定義されています。 参照先 DKC_DESERIALIZE, DKC_SINGLELIST, DKC_SINGLELIST_OBJECT, dkcAllocSingleListDeserialize(), dkcAllocSingleListObject(), dkcDeserializeRead(), dkcFreeSingleList(), dkcmNOT_ASSERT, dkcSingleListTail(), edkcSerializeIDSingleListObject, と NULL.
00358 {
00359 int sig;
00360 size_t read;
00361 DKC_SINGLELIST_OBJECT t,*plistobj;
00362 DKC_SINGLELIST *li;
00363
00364 //シグネチャを取得
00365 dkcDeserializeRead(se,&sig,sizeof(sig),&read);
00366 //そんな馬鹿な!判定
00367 if(read != sizeof(sig) || edkcSerializeIDSingleListObject != sig)
00368 {
00369 return NULL;
00370 }
00371 //objectを取得
00372 dkcDeserializeRead(se,&t,sizeof(t),&read);
00373
00374 if(read != sizeof(t)){//なぜ、もう読み込めないのだ!
00375 return NULL;
00376 }
00377 //single listを復元ナリ
00378 li = dkcAllocSingleListDeserialize(se);
00379 if(li == NULL) return NULL;
00380
00381 //objectをAlloc
00382 plistobj = dkcAllocSingleListObject(NULL,0);
00383 # ifdef DEBUG
00384 dkcmNOT_ASSERT(NULL== plistobj);
00385 # endif
00386 if(NULL == plistobj) goto Error;
00387
00388 //内部のリストは解放しておく^^;結構強引な処理
00389 dkcFreeSingleList(&plistobj->mBegin);
00390
00391 plistobj->mBegin = li;
00392 plistobj->mTail = dkcSingleListTail(li);
00393
00394 //多分、これでOK!?
00395 return plistobj;
00396 Error:
00397 dkcFreeSingleList(&li);
00398 return NULL;
00399 }
|
|
|
DKC_SINGLELISTをデリート (リンクしてあるリストも削除します。 一つだけの要素を削除したい場合はdkcEraseSingleListを使ってください。)
dkcSingleList.c の 43 行で定義されています。 参照先 DKC_SINGLELIST, 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 行で定義されています。 参照先 DKC_SINGLELIST, dkcDeleteSingleList(), と NULL. 参照元 dkcAllocSingleListObject(), dkcAllocSingleListObjectDeserialize(), と 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 の 350 行で定義されています。 参照先 DKC_SINGLELIST_OBJECT, dkcFree(), dkcFreeSingleList(), と NULL.
00351 {
00352 if(NULL==p || NULL==*p) return edk_ArgumentException;
00353 dkcFreeSingleList(&(*p)->mBegin);
00354 return dkcFree((void **)p);
00355 }
|
|
||||||||||||||||
|
dkcSingleList.c の 123 行で定義されています。 参照先 dkc_memcpy(), DKC_SINGLELIST, dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL.
|
|
||||||||||||||||
|
dkcSingleList.c の 13 行で定義されています。 参照先 BYTE, dkc_memcpy(), DKC_SINGLELIST, 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 行で定義されています。 参照先 DKC_SINGLELIST, dkcmNOT_ASSERT, dkc_SingleList::mNext, と NULL. 参照元 dkcAllocSingleListDeserialize(), と dkcSingleListInsert().
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 行で定義されています。 参照先 DKC_SINGLELIST, dkcFree(), dkc_SingleList::mBuff, dkc_SingleList::mNext, と NULL. 参照元 dkcDeleteSingleList(), と dkcSLOEraseLogic().
|
|
||||||||||||||||
|
リスト構造体内に保存しているデータをもらう dkcSingleList.c の 217 行で定義されています。 参照先 dkc_memcpy(), DKC_SINGLELIST, dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 参照元 dkcAllocSingleListObject().
00218 {
00219 if(NULL==ptr || NULL==data || 0==size){
00220 return edk_FAILED;
00221 }
00222 return dkc_memcpy(data,size,ptr->mBuff,ptr->mSize);
00223 }
|
|
||||||||||||||||
|
dkcSingleList.c の 99 行で定義されています。 参照先 DKC_SINGLELIST, 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 の 403 行で定義されています。 参照先 DKC_SERIALIZE, DKC_SINGLELIST_OBJECT, dkcSerializeWrite(), dkcSingleListSerialize(), edkcSerializeIDSingleListObject, と dkc_SingleListObject::mBegin.
00404 {
00405 int sig;
00406
00407 sig = edkcSerializeIDSingleListObject;
00408 //シグネチャ保存
00409 dkcSerializeWrite(se,&sig,sizeof(sig));
00410 //objectを保存
00411 dkcSerializeWrite(se,ptr,sizeof(DKC_SINGLELIST_OBJECT));
00412
00413 //シングルリストをシリアライズ
00414 dkcSingleListSerialize(ptr->mBegin,se);
00415 }
|
|
||||||||||||
|
DKC_SERIALIZEにシリアライズデータをぶち込む.
dkcSingleList.c の 184 行で定義されています。 参照先 DKC_SERIALIZE, DKC_SINGLELIST, dkcmNOT_ASSERT, dkcSerializeWrite(), edkcSerializeIDSingleList, dkc_SingleList::mBuff, dkc_SingleList::mNext, dkc_SingleList::mSize, と NULL. 参照元 dkcSingleListObjectSerialize().
00185 {
00186 DKC_SINGLELIST *tp = (DKC_SINGLELIST *)ptr;
00187 size_t c; //counter
00188 UINT sig;//signature
00189 //size_t i; //for counter
00190 dkcmNOT_ASSERT(NULL==ptr);
00191
00192 sig = edkcSerializeIDSingleList;
00193 //シグネチャを保存
00194 dkcSerializeWrite(se,&sig,sizeof(sig));
00195
00196 for(c=0;;c++)//c=0はSerialize,Deserialize統一しないと行けない。
00197 {//liner count... very slow...
00198 if(NULL == tp->mNext) break;
00199 tp = tp->mNext;
00200 }
00201 //数を入れる。
00202 dkcSerializeWrite(se,&c,sizeof(c));
00203
00204 tp = (DKC_SINGLELIST *)ptr;
00205 for(;;){
00206 //構造体を入れる。
00207 dkcSerializeWrite(se,tp,sizeof(DKC_SINGLELIST));
00208 //バッファ領域を入れる。
00209 dkcSerializeWrite(se,tp->mBuff,tp->mSize);
00210 if(NULL == tp->mNext){
00211 break;
00212 }
00213 tp = tp->mNext;//次へのポインタ
00214 }
00215
00216 }
|
|
||||||||||||||||
|
シングルリストの一つの要素が持っているバッファにデータを書き込む(上書きする) 足りないバッファサイズはリサイズされる。 dkcSingleList.c の 225 行で定義されています。 参照先 BYTE, dkc_memcpy(), DKC_SINGLELIST, dkcReallocate(), dkc_SingleList::mBuff, dkc_SingleList::mSize, と NULL. 参照元 dkcAllocSingleListObject().
00226 {
00227 void *NewPtr;
00228
00229 if(NULL==ptr || NULL==data || 0==size){
00230 return edk_FAILED;
00231 }
00232
00233 if(ptr->mSize < size){
00234 if(DKUTIL_FAILED(dkcReallocate(&NewPtr,size,(void **)&(ptr->mBuff)))){
00235 return edk_FAILED;
00236 }
00237
00238 ptr->mBuff =(BYTE *) NewPtr;
00239 ptr->mSize = size;
00240 }
00241
00242 if(DKUTIL_FAILED(dkc_memcpy(ptr->mBuff,ptr->mSize,data,size))){
00243 return edk_FAILED;
00244 }
00245
00246 return edk_SUCCEEDED;
00247 }
|
|
|
dkcSingleList.c の 248 行で定義されています。 参照先 DKC_SINGLELIST, dkc_SingleList::mNext, と NULL.
00249 {
00250 DKC_SINGLELIST *it = top;
00251 size_t count = 0;
00252 for(;it != NULL;)
00253 {
00254 count++;
00255 it = it->mNext;
00256 }
00257 return count;
00258 }
|
|
|
dkcSingleList.c の 260 行で定義されています。 参照先 DKC_SINGLELIST, dkc_SingleList::mNext, と NULL. 参照元 dkcAllocSingleListObjectDeserialize().
00260 {
00261 DKC_SINGLELIST *it = top;
00262 for(;;)
00263 {
00264 if(NULL == it->mNext) break;
00265 it = it->mNext;
00266
00267 }
00268 return it;
00269 }
|
|
|
dkcSingleList.c の 274 行で定義されています。 参照先 DKC_SINGLELIST, と dkc_SingleListObject::mBegin. 参照元 dkcAllocSingleListObject().
00274 {
00275 //return p->mBegin->mNext;//beginには何も入っていないから。
00276 return p->mBegin;
00277 }
|
|
|
dkcSingleList.c の 311 行で定義されています。 参照先 BOOL, dkc_SingleListObject::mBegin, と dkc_SingleListObject::mTail. 参照元 dkcAllocSingleListObject().
|
|
|
dkcSingleList.c の 281 行で定義されています。 参照先 BOOL, DKC_SINGLELIST, と NULL. 参照元 dkcAllocSingleListObject().
00281 {
00282 return (NULL==p);
00283 }
|
|
||||||||||||||||
|
dkcSingleList.c の 297 行で定義されています。 参照先 DKC_SINGLELIST, dkcSingleListErase(), dkc_SingleListObject::mBegin, dkc_SingleList::mNext, と dkc_SingleListObject::mTail. 参照元 dkcAllocSingleListObject().
00298 {
00299 if(p->mTail == p->mBegin){
00300 return;//何もない。
00301 }else if(p->mTail == target){
00302 prev->mNext = dkcSingleListErase(target);//多分NULLが返ってくる。
00303 p->mTail = prev;//tail更新
00304 }else if(p->mBegin == target){
00305 prev->mNext = dkcSingleListErase(target);
00306 p->mBegin = prev->mNext;//top 更新
00307 }else{
00308 prev->mNext = dkcSingleListErase(target);
00309 }
00310 }
|
|
|
dkcSingleList.c の 284 行で定義されています。 参照先 DKC_SINGLELIST, と dkc_SingleList::mNext. 参照元 dkcAllocSingleListObject().
00284 {
00285 return p->mNext;
00286 }
|
|
||||||||||||||||
|
dkcSingleList.c の 288 行で定義されています。 参照先 BOOL, dkcSingleListInsert(), dkc_SingleList::mNext, dkc_SingleListObject::mTail, と TRUE. 参照元 dkcAllocSingleListObject().
|
|
|
dkcSingleList.c の 278 行で定義されています。 参照先 DKC_SINGLELIST, と dkc_SingleListObject::mTail. 参照元 dkcAllocSingleListObject().
00278 {
00279 return p->mTail;
00280 }
|
1.3.6