00001 00007 #define DKUTIL_C_BUFFER_C 00008 #include "dkcBuffer.h" 00009 00010 00011 00013 DKC_BUFFER* WINAPI dkcAllocBuffer(const void *data,size_t size){ 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 } 00039 00040 int WINAPI dkcFreeBuffer(DKC_BUFFER **ptr){ 00041 if(NULL==ptr || NULL==*ptr) return edk_ArgumentException; 00042 dkcFree((void **)&(*ptr)->mBuff); 00043 dkcFree((void **)ptr); 00044 return edk_SUCCEEDED; 00045 } 00046 00047 00048 00049 int WINAPI dkcBufferSet(DKC_BUFFER *ptr,const void *data,size_t size) 00050 { 00051 return dkcBufferSet_INL(ptr,data,size); 00052 } 00053 00054 00055 int WINAPI dkcBufferSetOffset(DKC_BUFFER *ptr, 00056 const void *data,size_t size,size_t offset){ 00057 return dkcBufferSetOffset_INL(ptr,data,size,offset); 00058 } 00059 00060 00061 00062 00063 int WINAPI dkcBufferGet(DKC_BUFFER *ptr,void *data,size_t size){ 00064 return dkcBufferGet_INL(ptr,data,size); 00065 } 00066 00067 int WINAPI dkcBufferGetOffset(DKC_BUFFER *ptr, 00068 void *data,size_t size,size_t offset){ 00069 return dkcBufferGetOffset_INL(ptr,data,size,offset); 00070 } 00071 00072 int WINAPI dkcBufferResize(DKC_BUFFER *ptr,size_t size) 00073 { 00074 return dkcBufferResize_INL(ptr,size); 00075 } 00076 00077 00078 00079 DKC_BUFFER* WINAPI dkcAllocBufferCopy(const DKC_BUFFER *ptr){ 00080 return dkcAllocBufferCopy_INL(ptr); 00081 } 00082 00083 size_t WINAPI dkcBufferSize(DKC_BUFFER *p){ 00084 return dkcBufferSize_INL(p); 00085 } 00086 BYTE *WINAPI dkcBufferPointer(DKC_BUFFER *p){ 00087 return dkcBufferPointer_INL(p); 00088 }