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

# dkcDeque.c

説明を見る。

    00001
    00007 #define DKUTIL_C_DEQUE_C
    00008 #include "dkcDeque.h"
    00009 #include "dkcStdio.h"
    00010
    00011
    00012
    00013 DKC_DEQUE* WINAPI dkcAllocDeque(size_t numof__,size_t offsetof__)
    00014 {
    00015     DKC_DEQUE *p;
    00016     size_t size = numof__ * offsetof__;
    00017
    00018     p = dkcAllocate(sizeof(DKC_DEQUE));
    00019     if(NULL==p) return NULL;
    00020
    00021     p->mBuffer = dkcAllocate(size);
    00022     if(NULL==p->mBuffer) goto Error;
    00023
    00024     /* dkcAllocateでmemset(0)なのでヽ(ﾟдﾟ)ノ　ええじゃないか
    00025     p->mCount = 0;
    00026     p->mEnd = 0;
    00027     p->mStart = 0;
    00028     */
    00029     p->mSize = size;
    00030     p->mOffsetOf = offsetof__;
    00031 Error:
    00032     dkcFree((void **)&p);
    00033     return NULL;
    00034 }
    00035
    00036 int WINAPI dkcFreeDeque(DKC_DEQUE **ptr){
    00037     if(NULL==ptr || NULL == (*ptr)) return edk_ArgumentException;
    00038     dkcFree((void **)&(*ptr)->mBuffer);
    00039     return dkcFree((void **)ptr);
    00040 }
    00041 #if 0
    00042
    00043
    00044 int WINAPI dkcDequePushBack(DKC_DEQUE *ptr,const void *data)
    00045 {
    00046     BYTE *tb;
    00047     dkcmNOT_ASSERT(NULL==ptr);
    00048
    00049     if(ptr->mCount >= ptr->mSize / ptr->mOffsetOf){
    00050         return edk_FAILED;
    00051     }
    00052
    00053     tb = ptr->mBuffer;
    00054
    00055     memcpy(&tb[ptr->mEnd],data,ptr->mOffsetOf);
    00056
    00057
    00058     ptr->mEnd += ptr->mOffsetOf;#error ここはmEndのlength checkが必要
    00059     ptr->mCount++;
    00060
    00061
    00062 }
    00063 #endif
    00064
    00067 int WINAPI dkcDequePopBack(DKC_DEQUE *ptr,void *);
    00068
    00069 int WINAPI dkcDequePushFront(DKC_DEQUE *ptr,const void *);
    00073 int WINAPI dkcDequePopFront(DKC_DEQUE *ptr,void *);
    00077 void WINAPI dkcDequeClear(DKC_DEQUE *ptr);
    00078
    00079 //int WINAPI dkcDequeSerialize(const DKC_DEQUE *ptr,DKC_SERIALIZE *se);
    00080
    00081 //DKC_DEQUE* WINAPI dkcAllocQueueDeserialize(DKC_DESERIALIZE *se);
    00082
    00089 int WINAPI dkcDequeGetPoint(const DKC_DEQUE *ptr,size_t point_of__,void *buffer,size_t buffsize);
    00090
    00091
    00092