メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

# dkcBuffer.c

`#include "dkcBuffer.h"`

dkcBuffer.cのインクルード依存関係図

ソースコードを見る。

## マクロ定義
#define | DKUTIL_C_BUFFER_C
## 関数
DKC_BUFFER *WINAPI | dkcAllocBuffer (const void *data, size_t size)
| バッファ領域を得る。
int WINAPI | dkcFreeBuffer (DKC_BUFFER **ptr)
| dkcAllocBuffer()で確保したリスト領域と内部バッファを削除。dkcAllocBufferと対。
int WINAPI | dkcBufferSet (DKC_BUFFER *ptr, const void *data, size_t size)
int WINAPI | dkcBufferSetOffset (DKC_BUFFER *ptr, const void *data, size_t size, size_t offset)
| バッファの先頭からoffset分の所にdataをぶち込む
int WINAPI | dkcBufferGet (DKC_BUFFER *ptr, void *data, size_t size)
int WINAPI | dkcBufferGetOffset (DKC_BUFFER *ptr, void *data, size_t size, size_t offset)
int WINAPI | dkcBufferResize (DKC_BUFFER *ptr, size_t size)
DKC_BUFFER *WINAPI | dkcAllocBufferCopy (const DKC_BUFFER *ptr)
| C++で言うcopy constructor
size_t WINAPI | dkcBufferSize (DKC_BUFFER *p)
| バッファのサイズ
BYTE *WINAPI | dkcBufferPointer (DKC_BUFFER *p)

## 説明

作者:
  d金魚

から:
  2004/3/xx

dkcBuffer.c で定義されています。

## マクロ定義

#define DKUTIL_C_BUFFER_C

| dkcBuffer.c の 7 行で定義されています。

## 関数

DKC_BUFFER* WINAPI dkcAllocBuffer | ( | const void * | data,
|  | size_t | size
| ) |

  | バッファ領域を得る。 引数:
  | data[in] | バッファへコピーしたいデータへのポインタ
  | size[in] | バッファのサイズ（dataのサイズ）
dkcBuffer.c の 13 行で定義されています。 参照先 BYTE, dkcAllocate(), dkcBufferSet(), dkcFree(), dkc_Buffer::mBuff, dkc_Buffer::mSize, と NULL. 参照元 dkcAllocArrayOneByOne(), dkcAllocBufferCopy(), dkcAllocSingleListBuffer(), と dkcOpenFileWithSignature().
    00013                                                                {
    00014     DKC_BUFFER *p;
    00015
    00016     if(0==size) return NULL;
    00017
    00018     p = (DKC_BUFFER *)dkcAllocate(sizeof(DKC_BUFFER));
    00019     if(NULL==p) return NULL;
    00020
    00021
    00022     p->mBuff = (BYTE *)dkcAllocate(size);
    00023     if(NULL==p->mBuff) goto Error;
    00024
    00025     p->mSize = size;
    00026
    00027     if(data){
    00028         if(DKUTIL_FAILED(dkcBufferSet(p,data,size))){
    00029             goto Error;
    00030         }
    00031     }else{
    00032
    00033     }
    00034     return p;
    00035 Error:
    00036     dkcFree((void **)&p);
    00037     return NULL;
    00038 }

DKC_BUFFER* WINAPI dkcAllocBufferCopy | ( | const DKC_BUFFER * | ptr | ) |

| C++で言うcopy constructor dkcBuffer.c の 105 行で定義されています。 参照先 dkcAllocBuffer(), dkcmNOT_ASSERT, dkc_Buffer::mBuff, dkc_Buffer::mSize, と NULL.
    00105                                                             {
    00106     dkcmNOT_ASSERT(NULL==ptr || NULL==ptr->mBuff);
    00107
    00108     return dkcAllocBuffer(ptr->mBuff,ptr->mSize);
    00109 }

int WINAPI dkcBufferGet | ( | DKC_BUFFER * | ptr,
|  | void * | data,
|  | size_t | size
| ) |

| バッファの先頭からsize分データをいただく dkcBuffer.c の 71 行で定義されています。 参照先 dkc_memcpy(), dkc_Buffer::mBuff, と dkc_Buffer::mSize.
    00071                                                                {
    00072     //if(NULL==ptr) return edk_ArgumentException;//fast
    00073     return dkc_memcpy(data,size,ptr->mBuff,ptr->mSize);
    00074 }

int WINAPI dkcBufferGetOffset | ( | DKC_BUFFER * | ptr,
|  | void * | data,
|  | size_t | size,
|  | size_t | offset
| ) |

| dkcBuffer.c の 76 行で定義されています。 参照先 dkc_memcpy(), dkc_Buffer::mBuff, と dkc_Buffer::mSize. 参照元 dkcArrayOneByOneReference().
    00077                                                                                                  {
    00078     if(ptr->mSize < offset + size){
    00079         return edk_BufferOverFlow;
    00080     }
    00081     return dkc_memcpy(
    00082         data,size,
    00083         ptr->mBuff + offset,
    00084         size
    00085     );
    00086
    00087 }

BYTE* WINAPI dkcBufferPointer | ( | DKC_BUFFER * | p | ) |

| dkcBuffer.c の 114 行で定義されています。 参照先 dkc_Buffer::mBuff. 参照元 dkcFileWithSignatureCheckCheat(), と FileWithSignatureGetDigest().
    00114                                             {
    00115     return p->mBuff;
    00116 }

int WINAPI dkcBufferResize | ( | DKC_BUFFER * | ptr,
|  | size_t | size
| ) |

| バッファのサイズを変える。 dkcBuffer.c の 89 行で定義されています。 参照先 BYTE, dkcReallocate(), dkc_Buffer::mBuff, dkc_Buffer::mSize, と NULL. 参照元 BufferResize().
    00090 {
    00091     void *NewPtr;
    00092     if(NULL==ptr || 0==size || NULL==ptr->mBuff) return edk_ArgumentException;
    00093     if(DKUTIL_FAILED(dkcReallocate(&NewPtr,size,(void **)&(ptr->mBuff)))){
    00094         return edk_FAILED;
    00095     }
    00096
    00097     ptr->mBuff = (BYTE *)NewPtr;
    00098     ptr->mSize = size;
    00099
    00100     return edk_SUCCEEDED;
    00101 }

int WINAPI dkcBufferSet | ( | DKC_BUFFER * | ptr,
|  | const void * | data,
|  | size_t | size
| ) |

| バッファの先頭にdataをぶち込む dkcBuffer.c の 49 行で定義されています。 参照先 dkc_memcpy(), dkc_Buffer::mBuff, と dkc_Buffer::mSize. 参照元 dkcAllocBuffer().
    00050 {
    00051     //if(NULL==ptr) return edk_ArgumentException;//
    00052
    00053     return dkc_memcpy(ptr->mBuff,ptr->mSize,data,size);
    00054 }

int WINAPI dkcBufferSetOffset | ( | DKC_BUFFER * | ptr,
|  | const void * | data,
|  | size_t | size,
|  | size_t | offset
| ) |

| バッファの先頭からoffset分の所にdataをぶち込む dkcBuffer.c の 57 行で定義されています。 参照先 dkc_memcpy(), dkc_Buffer::mBuff, と dkc_Buffer::mSize. 参照元 setData().
    00058                                                                                                        {
    00059     if(ptr->mSize < offset + size){
    00060         return edk_BufferOverFlow;
    00061     }
    00062     return dkc_memcpy(
    00063         ptr->mBuff + offset,
    00064         ptr->mSize - offset
    00065         ,data,size);
    00066 }

size_t WINAPI dkcBufferSize | ( | DKC_BUFFER * | p | ) |

| バッファのサイズ dkcBuffer.c の 111 行で定義されています。 参照先 dkc_Buffer::mSize. 参照元 BufferResize(), dkcFileWithSignatureCheckCheat(), と FileWithSignatureGetDigest().
    00111                                           {
    00112     return p->mSize;
    00113 }

int WINAPI dkcFreeBuffer | ( | DKC_BUFFER ** | ptr | ) |

| dkcAllocBuffer()で確保したリスト領域と内部バッファを削除。dkcAllocBufferと対。 DKC_BUFFERをデリート 覚え書き: 必ず使用したあとはこれを呼んでください。 dkcBuffer.c の 40 行で定義されています。 参照先 dkcFree(), と NULL. 参照元 dkcAllocArrayOneByOne(), dkcCloseFileWithSignature(), と dkcFreeArrayOneByOne().
    00040                                           {
    00041     if(NULL==ptr || NULL==*ptr) return edk_ArgumentException;
    00042     dkcFree((void **)&(*ptr)->mBuff);
    00043     dkcFree((void **)ptr);
    00044     return edk_SUCCEEDED;
    00045 }