#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 *) |
一つの要素のサイズ(オフセット)を返す |
仕様 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, dkcArrayOneByOnePushSafe(), と dkc_ArrayOneByOne::mOffset.
00164 { 00165 00166 return dkcArrayOneByOnePushSafe(p,data,p->mOffset); 00167 } |
|
dkcArrayOneByOne.c の 129 行で定義されています。 参照先 BufferResize(), DKC_ARRAY_ONEBYONE, dkcStackIsEmpty(), 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(), と 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 } |