#include "dkcOSIndependent.h"
#include "dkcBuffer.h"
#include "dkcStack.h"
dkcArrayOneByOne.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

構成 | |
| struct | dkc_ArrayOneByOne |
型定義 | |
| typedef dkc_ArrayOneByOne | DKC_ARRAY_ONEBYONE |
列挙型 | |
| enum | { edkcArrayOneByOneStatic = 0, edkcArrayOneByOneDynamic } |
関数 | |
| DKC_EXTERN DKC_ARRAY_ONEBYONE *WINAPI | dkcAllocArrayOneByOneStatic (size_t offset, size_t num) |
| DKC_EXTERN DKC_ARRAY_ONEBYONE *WINAPI | dkcAllocArrayOneByOneDynamic (size_t offset, size_t num, size_t ext_num) |
| dkcAllocArrayOneByOneStatic() バッファが足りない場合、バッファを動的拡張するモードです。 | |
| DKC_EXTERN int WINAPI | dkcFreeArrayOneByOne (DKC_ARRAY_ONEBYONE **pp) |
| dkcAllocArrayOneByOne 系で取得したメモリ領域を開放します。 | |
| DKC_EXTERN int WINAPI | dkcArrayOneByOnePushSafe (DKC_ARRAY_ONEBYONE *, const void *data, size_t size) |
| dkcArrayOneByOnePush()の安全版 | |
| DKC_EXTERN int WINAPI | dkcArrayOneByOnePush (DKC_ARRAY_ONEBYONE *, const void *data) |
| 要素を挿入する | |
| DKC_EXTERN int WINAPI | dkcArrayOneByOnePop (DKC_ARRAY_ONEBYONE *, int id) |
| 要素を削除する | |
| DKC_EXTERN int WINAPI | dkcArrayOneByOneReference (DKC_ARRAY_ONEBYONE *, int id, void *ref) |
| DKC_EXTERN size_t WINAPI | dkcArrayOneByOneSize (DKC_ARRAY_ONEBYONE *) |
| 現在の使用している要素数を返す。 | |
| DKC_EXTERN size_t WINAPI | dkcArrayOneByOneCapacity (DKC_ARRAY_ONEBYONE *) |
| このコンテナの許容量(要素数)を返す。 | |
| DKC_EXTERN size_t WINAPI | dkcArrayOneByOneRestSize (DKC_ARRAY_ONEBYONE *p) |
| このコンテナの残り領域(要素数)を返す | |
| DKC_EXTERN size_t WINAPI | dkcArrayOneByOneOffset (DKC_ARRAY_ONEBYONE *) |
| 一つの要素のサイズ(オフセット)を返す | |
d金魚
仕様 INT_MAX個の要素までしか挿入できない。
dkcArrayOneByOne.h で定義されています。
|
|
|
dkcArrayOneByOne.h の 46 行で定義されています。
00046 {
00048 edkcArrayOneByOneStatic = 0,
00050 edkcArrayOneByOneDynamic,
00051 };
|
|
||||||||||||||||
|
dkcAllocArrayOneByOneStatic() バッファが足りない場合、バッファを動的拡張するモードです。
dkcArrayOneByOne.c の 61 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcAllocArrayOneByOne(), と edkcArrayOneByOneDynamic.
00061 {
00062 return dkcAllocArrayOneByOne( edkcArrayOneByOneDynamic, offset,num,ext_num);
00063 }
|
|
||||||||||||
|
dkcArrayOneByOne.c の 57 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcAllocArrayOneByOne(), と edkcArrayOneByOneStatic.
00057 {
00058 return dkcAllocArrayOneByOne( edkcArrayOneByOneStatic, offset , num , 0 );
00059 }
|
|
|
このコンテナの許容量(要素数)を返す。
dkcArrayOneByOne.c の 197 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, と dkc_ArrayOneByOne::mNum.
00197 {
00198 return p->mNum;
00199 }
|
|
|
一つの要素のサイズ(オフセット)を返す
dkcArrayOneByOne.c の 207 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, と dkc_ArrayOneByOne::mOffset.
00207 {
00208 return p->mOffset;
00209 } |
|
||||||||||||
|
要素を削除する
dkcArrayOneByOne.c の 173 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcmFORCE_NOT_ASSERT, dkcStackDynamicPush(), dkc_Stack::mBuffer, dkc_Stack::mCount, と dkc_ArrayOneByOne::mStack.
00173 {
00174
00175 #ifdef DEBUG
00176 int i;
00177 //重複チェックをしてみる。
00178 int *ch = (int *)p->mStack->mBuffer;
00179 size_t se = p->mStack->mCount;
00180 for(i=0;i<(int)se;i++){
00181 dkcmFORCE_NOT_ASSERT(ch[i] == id);
00182 }
00183 #endif
00184 return dkcStackDynamicPush(p->mStack,&id);
00185 }
|
|
||||||||||||
|
要素を挿入する
dkcArrayOneByOne.c の 164 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, DKC_INLINE, dkcArrayOneByOnePushSafe(), と dkc_ArrayOneByOne::mOffset.
00164 {
00165
00166 return dkcArrayOneByOnePushSafe(p,data,p->mOffset);
00167 }
|
|
||||||||||||||||
|
dkcArrayOneByOne.c の 129 行で定義されています。 参照先 BufferResize(), DKC_ARRAY_ONEBYONE, dkcStackIsEmpty(), DKUTIL_FAILED, edkcArrayOneByOneDynamic, edkcArrayOneByOneStatic, dkc_ArrayOneByOne::mFlag, dkc_ArrayOneByOne::mOffset, dkc_ArrayOneByOne::mStack, と setData().
00129 {
00130 size_t r;
00131
00132 if(size > p->mOffset){
00133 return -1;
00134 }
00135
00136
00137
00138 switch(p->mFlag)
00139 {
00140 case edkcArrayOneByOneStatic:
00141 if(dkcStackIsEmpty(p->mStack)){
00142 return -1;
00143 }
00144
00145 break;
00146 case edkcArrayOneByOneDynamic:
00147 if(dkcStackIsEmpty(p->mStack))
00148 {//バッファ拡張処理
00149 if(DKUTIL_FAILED(BufferResize(p))){
00150 return -1;
00151 }
00152 }
00153
00154 break;
00155 }//end of switch
00156
00157 r = setData(p,data,size);
00158
00159 return r;
00160
00161 }
|
|
||||||||||||||||
|
dkcArrayOneByOne.c の 188 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcBufferGetOffset(), dkc_ArrayOneByOne::mBuff, と dkc_ArrayOneByOne::mOffset.
00188 {
00189 return dkcBufferGetOffset(p->mBuff,pp,p->mOffset,p->mOffset * id);
00190 }
|
|
|
このコンテナの残り領域(要素数)を返す
dkcArrayOneByOne.c の 202 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcStackRestSize(), と dkc_ArrayOneByOne::mStack.
00203 {
00204 return dkcStackRestSize(p->mStack);
00205 }
|
|
|
現在の使用している要素数を返す。
dkcArrayOneByOne.c の 193 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcmNOT_ASSERT, dkcStackSize(), dkc_ArrayOneByOne::mNum, と dkc_ArrayOneByOne::mStack.
00193 {
00194 dkcmNOT_ASSERT(p->mNum < dkcStackSize(p->mStack));
00195 return p->mNum - dkcStackSize(p->mStack);
00196 }
|
|
|
dkcAllocArrayOneByOne 系で取得したメモリ領域を開放します。
dkcArrayOneByOne.c の 65 行で定義されています。 参照先 DKC_ARRAY_ONEBYONE, dkcFree(), dkcFreeBuffer(), dkcFreeStack(), edk_FAILED, と NULL.
00065 {
00066 if(NULL==p || NULL==*p){
00067 return edk_FAILED;
00068 }
00069 dkcFreeStack(& ( (*p)->mStack ) );
00070 dkcFreeBuffer(& ( (*p)->mBuff ) );
00071 return dkcFree((void **)p);
00072 }
|
1.3.6