メインページ | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcBuffer.c

#include "dkcBuffer.h"

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

Include dependency graph

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

Included by dependency graph

ソースコードを見る。

マクロ定義

#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.c7 行で定義されています。


関数

DKC_BUFFER* WINAPI dkcAllocBuffer const void *  data,
size_t  size
 

バッファ領域を得る。

引数:
data[in] バッファへコピーしたいデータへのポインタ
size[in] バッファのサイズ(dataのサイズ)

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

参照先 BYTE, DKC_BUFFER, dkcAllocate(), dkcBufferSet(), dkcFree(), DKUTIL_FAILED, 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.c105 行で定義されています。

参照先 DKC_BUFFER, 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.c71 行で定義されています。

参照先 DKC_BUFFER, 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.c76 行で定義されています。

参照先 DKC_BUFFER, dkc_memcpy(), edk_BufferOverFlow, 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.c114 行で定義されています。

参照先 BYTE, DKC_BUFFER, と dkc_Buffer::mBuff.

参照元 dkcFileWithSignatureCheckCheat(), と FileWithSignatureGetDigest().

00114                                             {
00115     return p->mBuff;
00116 }

int WINAPI dkcBufferResize DKC_BUFFER ptr,
size_t  size
 

バッファのサイズを変える。

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

参照先 BYTE, DKC_BUFFER, dkcReallocate(), DKUTIL_FAILED, edk_ArgumentException, edk_FAILED, edk_SUCCEEDED, 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.c49 行で定義されています。

参照先 DKC_BUFFER, 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.c57 行で定義されています。

参照先 DKC_BUFFER, dkc_memcpy(), edk_BufferOverFlow, 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.c111 行で定義されています。

参照先 DKC_BUFFER, と dkc_Buffer::mSize.

参照元 BufferResize(), dkcFileWithSignatureCheckCheat(), と FileWithSignatureGetDigest().

00111                                           {
00112     return p->mSize;
00113 }

int WINAPI dkcFreeBuffer DKC_BUFFER **  ptr  ) 
 

dkcAllocBuffer()で確保したリスト領域と内部バッファを削除。dkcAllocBufferと対。

DKC_BUFFERをデリート

覚え書き:
必ず使用したあとはこれを呼んでください。

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

参照先 DKC_BUFFER, dkcFree(), edk_ArgumentException, edk_SUCCEEDED, と 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 }


dkutil_cに対してTue Oct 19 03:35:10 2004に生成されました。 doxygen 1.3.6