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

dkcStdio.c

#include "dkcStdio.h"

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

ソースコードを見る。

マクロ定義

#define DKUTIL_C_STDIO_C

関数

int WINAPI dkc_memcpy (void *dest, size_t size1, const void *src, size_t size2)
int WINAPI dkc_memcpy_zc (void *dest, size_t size1, const void *src, size_t size2)
 zero checked memcpy
int WINAPI dkc_memmove (void *dest, size_t size1, const void *src, size_t size2)
int WINAPI dkc_strcpy (char *dest, size_t size1, const char *src, size_t srclen)
int WINAPI dkc_strcpy_amap (char *dest, size_t size1, const char *src, size_t srclen)
int WINAPI dkc_strcpy_amap2 (char *dest, size_t size1, const char *src)
int WINAPI dkc_strcat (char *dest, size_t destsize, size_t destlen, const char *src, size_t srclen)
int WINAPI dkc_strcat2 (char *dest, size_t destsize, const char *src)
int WINAPI dkc_strcat_amap (char *dest, size_t destsize, size_t destlen, const char *src, size_t srclen)
int WINAPI dkc_strcat_amap2 (char *dest, size_t destsize, const char *src)
int WINAPI dkc_memcmp (const void *buf1, size_t buf1PermitSize, const void *buf2, size_t count)
int WINAPI dkc_strcmp (const char *b1, size_t b1size, const char *b2, size_t b2size)
DKC_INLINE int WINAPI dkc_wcscat2 (wchar_t *dest, size_t destsize, const wchar_t *src)
 destsizeはバイト単位・・・
DKC_INLINE size_t dkc_beam (int num)
int dkc_stream_swap (char *memory, size_t size, size_t point)
 一つのメモリ領域をpointを基準に入れ替える。
void dkc_memswap (void *va, void *vb, size_t size)
 va から size バイトの内容と、vb から size バイトの内容を交換する。
void dkc_memreverse (void *array, size_t num, size_t size)
 大きさ size の要素 num 個からなる配列 array の要素を 逆順に並べ替える。
void dkc_memrrotate (void *array, size_t shift, size_t num, size_t size)
 大きさ size の要素 num 個からなる配列 array の要素を 右方向に要素 shift 個分だけ回転移動する。
void dkc_memlrotate (void *array, size_t shift, size_t num, size_t size)
 大きさ size の要素 num 個からなる配列 array の要素を 左方向に要素 shift 個分だけ回転移動する。


マクロ定義

#define DKUTIL_C_STDIO_C
 

覚え書き:
dkcStdio.hのC++版の方をCに移植したもの・・・。 あ〜、なんか虚しい・・・。なんかバグあったらどうかご報告ください。m(_ _)m
個人メモ: フィックス方法:間違い個所だけ直す・・・。

dkcStdio.c10 行で定義されています。


関数

DKC_INLINE size_t dkc_beam int  num  ) 
 

戻り値:
10進法での桁数を返す

dkcStdio.c153 行で定義されています。

00153                                    {    
00154     size_t b = 0 ;
00155     int i=0;
00156     for(i = 10 ; num >= i ; i *= 10 ){
00157         b ++ ;
00158     }
00159     return b;
00160 }

int WINAPI dkc_memcmp const void *  buf1,
size_t  buf1PermitSize,
const void *  buf2,
size_t  count
 

参照:
dkutil::dkmemcmp

dkcStdio.c99 行で定義されています。

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

00101 {
00102     if(buf1PermitSize < count)return edk_LogicError;
00103     if(0 !=memcmp(buf1,buf2,count))return edk_FAILED;
00104     return edk_SUCCEEDED;
00105 }

int WINAPI dkc_memcpy void *  dest,
size_t  size1,
const void *  src,
size_t  size2
 

dkcStdio.c15 行で定義されています。

参照元 dkc_memcpy_zc(), dkcAllocCircularMemoryStreamCopy(), dkcBufferGet(), dkcBufferGetOffset(), dkcBufferSet(), dkcBufferSetOffset(), dkcGetSingleListBuffer(), dkcMemoryStreamLoadFromMemory(), dkcMemoryStreamRead(), dkcMemoryStreamWrite(), dkcMemoryStreamWriteToMemory(), dkcNewSingleList(), dkcSingleListGetBuffer(), dkcSingleListSetBuffer(), と dkcStringGetBuffer().

00015                                                                            {
00016     if(size1 < size2) return edk_FAILED;
00017     memcpy(dest,src,size2);
00018     return edk_SUCCEEDED;
00019 }

int WINAPI dkc_memcpy_zc void *  dest,
size_t  size1,
const void *  src,
size_t  size2
 

zero checked memcpy

dkcStdio.c21 行で定義されています。

参照先 dkc_memcpy(), と NULL.

参照元 dkc2TreeGetBuffer(), と dkc2TreeSetBuffer().

00021                                                                               {
00022     if(size1 == 0 || size2 == 0) return edk_FAILED;
00023     if(NULL==dest || NULL==src) return edk_FAILED;
00024     return dkc_memcpy(dest,size1,src,size2);
00025 }

void dkc_memlrotate void *  array,
size_t  shift,
size_t  num,
size_t  size
 

大きさ size の要素 num 個からなる配列 array の要素を 左方向に要素 shift 個分だけ回転移動する。

参照:
dkutil::memlrotate

dkcStdio.c245 行で定義されています。

参照先 dkc_memreverse().

00246 {
00247     dkc_memreverse( array,                      shift,     size ); // 012345678 -> 210345678
00248     dkc_memreverse( (char *)array+(size*shift), num-shift, size ); // 210345678 -> 210876543
00249     dkc_memreverse( array,                      num,       size ); // 210876543 -> 345678012
00250 }//memlrotate

int WINAPI dkc_memmove void *  dest,
size_t  size1,
const void *  src,
size_t  size2
 

dkcStdio.c28 行で定義されています。

00029 {
00030     if(size1 < size2){
00031         return edk_FAILED;
00032     }
00033     memmove(dest,src,size2);
00034     return edk_SUCCEEDED;
00035 }

void dkc_memreverse void *  array,
size_t  num,
size_t  size
 

大きさ size の要素 num 個からなる配列 array の要素を 逆順に並べ替える。

参照:
dkutil::memreverse

dkcStdio.c221 行で定義されています。

参照先 dkc_memswap().

参照元 dkc_memlrotate(), と dkc_memrrotate().

00222 {
00223     char *l;
00224     char *r;
00225 
00226     l = (char *)array;
00227     r = (char *)array + ((num-1) * size);
00228     for( ; l < r; l = l+size, r = r-size )
00229         dkc_memswap( l, r, size );
00230 }//memreverse

void dkc_memrrotate void *  array,
size_t  shift,
size_t  num,
size_t  size
 

大きさ size の要素 num 個からなる配列 array の要素を 右方向に要素 shift 個分だけ回転移動する。

参照:
dkutil::memrrotate

dkcStdio.c235 行で定義されています。

参照先 dkc_memreverse().

00236 {
00237     dkc_memreverse( array,                      num,       size ); // 012345678 -> 876543210
00238     dkc_memreverse( array,                      shift,     size ); // 876543210 -> 678543210
00239     dkc_memreverse( (char *)array+(size*shift), num-shift, size ); // 678543210 -> 678012345
00240 }//memrrotate

void dkc_memswap void *  va,
void *  vb,
size_t  size
 

va から size バイトの内容と、vb から size バイトの内容を交換する。

参照:
dkutil::memswap

dkcStdio.c204 行で定義されています。

参照元 dkc_memreverse().

00205 {
00206     char *ca;
00207     char *cb;
00208     char  cTmp;
00209     for( ca = (char *)va, cb = (char *)vb; size > 0; size--, ca++, cb++ )
00210     {
00211         cTmp = *ca;
00212         *ca  = *cb;
00213         *cb  = cTmp;
00214     }
00215 }//memswap

int WINAPI dkc_strcat char *  dest,
size_t  destsize,
size_t  destlen,
const char *  src,
size_t  srclen
 

参照:
dkutil::dkstrcat

dkcStdio.c66 行で定義されています。

参照元 dkc_strcat2().

00068 {
00069     //destlen + srclen + NULL文字
00070     if(destsize < destlen + srclen + 1) return edk_FAILED;
00071     strncat(dest,src,srclen);
00072     return edk_SUCCEEDED;
00073 }

int WINAPI dkc_strcat2 char *  dest,
size_t  destsize,
const char *  src
 

参照:
dkutil::dkstrcat2

dkcStdio.c75 行で定義されています。

参照先 dkc_strcat().

参照元 dkcSemiRealRandomInit().

00075                                                                   {
00076     return dkc_strcat(dest,destsize,strlen(dest),src,strlen(src));
00077 }

int WINAPI dkc_strcat_amap char *  dest,
size_t  destsize,
size_t  destlen,
const char *  src,
size_t  srclen
 

参照:
dkutil::dkstrcat_amap

dkcStdio.c79 行で定義されています。

参照元 dkc_strcat_amap2(), と dkcDirectoryConcatenate().

00081 {
00082     //destlen + srclen + NULL文字
00083     int result = edk_SUCCEEDED;
00084     size_t lsize = destlen + srclen + 1;
00085     if(destsize < lsize)
00086     {//オーバーしてたら・・・
00087         srclen = lsize - destsize - 1;
00088         result = edk_Not_Satisfactory;
00089     }
00090     strncat(dest,src,srclen);
00091     //dest[destlen + srclen - 1] = '\0';
00092     return result;
00093 }

int WINAPI dkc_strcat_amap2 char *  dest,
size_t  destsize,
const char *  src
 

参照:
dkutil::dkstrcat_amap2

dkcStdio.c95 行で定義されています。

参照先 dkc_strcat_amap().

00095                                                                        {
00096     return dkc_strcat_amap(dest,destsize,strlen(dest),src,strlen(src));
00097 }

int WINAPI dkc_strcmp const char *  b1,
size_t  b1size,
const char *  b2,
size_t  b2size
 

dkcStdio.c107 行で定義されています。

00108 {
00109     int result = edk_SUCCEEDED;
00110     size_t i = 0;
00111     //検索する文字列が多いとおかしいのでエラー
00112     if(b1size < b2size) return edk_LogicError;
00113     //if(b1size < b2size) return edk_LogicError;
00114 
00115     //とりあえずマッチするか確かめる。
00116     for(i=0;i<b2size;i++)
00117     {
00118         if(b1[i] != b2[i])
00119         {
00120             result = edk_FAILED;
00121             break;
00122         }
00123     }
00124     return result;
00125 }

int WINAPI dkc_strcpy char *  dest,
size_t  size1,
const char *  src,
size_t  srclen
 

dkcStdio.c37 行で定義されています。

参照元 dkcFindFileGetFileName(), dkcGetCurrentDirectory(), dkcPathStringDevideBegin_Logic(), dkcPathStringDevideNext_Logic(), dkcPathStringGetDirectory(), dkcPathStringGetDrive(), dkcPathStringGetFileExtension(), dkcPathStringGetFileName(), dkcSHA1DigestStr(), dkcSHA256DigestStr(), dkcSHA384DigestStr(), と dkcSHA512DigestStr().

00037                                                                             {
00038     if(size1 <= srclen) return edk_FAILED;
00039     strncpy(dest,src,srclen);
00040     //if(dest[srclen] != '\0') return edk_FAILED;
00041     dest[srclen] = '\0';
00042     return edk_SUCCEEDED;
00043 }

int WINAPI dkc_strcpy_amap char *  dest,
size_t  size1,
const char *  src,
size_t  srclen
 

dkcStdio.c46 行で定義されています。

参照元 dkc_strcpy_amap2().

00046                                                                                  {
00047 #   ifndef NDEBUG
00048     if(!(0 == size1 && 0 == srclen)){
00049         return edk_FAILED;
00050     }
00051 #   endif
00052     if(size1 <= srclen){//ここは<=か!?
00053         strncpy(dest,src,size1);
00054         dest[size1 - 1] = '\0';
00055         return edk_Not_Satisfactory;
00056     }else{
00057         strncpy(dest,src,srclen);
00058         dest[srclen] = '\0';
00059         return edk_SUCCEEDED;
00060     }
00061 }

int WINAPI dkc_strcpy_amap2 char *  dest,
size_t  size1,
const char *  src
 

参照:
dkutil::dkstrcpy_amap2

dkcStdio.c62 行で定義されています。

参照先 dkc_strcpy_amap().

00062                                                                     {
00063     return dkc_strcpy_amap(dest,size1,src,strlen(src));
00064 }

int dkc_stream_swap char *  memory,
size_t  size,
size_t  point
 

一つのメモリ領域をpointを基準に入れ替える。

引数:
memory[in][out] バッファへのポインタ
size[in] memoryのサイズ
point[in] 何処を基点(何バイト目から)にSwapするか?
戻り値:
edk_SUCCEEDED以外ならエラー
覚え書き:
char *buff="buffer";みたいに初期化したバッファをSwapさせるとエラーする。

dkcStdio.c163 行で定義されています。

参照先 FALSE, と TRUE.

参照元 dkcStringErase(), と dkcStringInsert().

00164 {
00165     char *p;
00166     size_t big;
00167     size_t small__;
00168     BOOL isLeft = FALSE;//左の方がでかいとTRUE
00169     if(size <= 1){
00170         return edk_FAILED;//スワップのしようが無い
00171     }
00172 
00173     
00174     if(size - point < point){
00175         big = point;//left
00176         small__ = size - point;
00177         isLeft = TRUE;
00178     }else{
00179         big = size - point;//right
00180         small__ = point;
00181     }
00182 
00183     p = (char *)malloc(big);
00184     if(!p) return edk_OutOfMemory;
00185     
00186     if(isLeft)
00187     {
00188         memcpy(p,memory,big);
00189         memcpy(memory,&memory[big],small__);
00190         memcpy(&memory[small__],p,big);
00191     }else{
00192         memcpy(p,&memory[small__],big);
00193         memcpy(&memory[big],memory,small__);
00194         memcpy(memory,p,big);
00195     }
00196     
00197     free(p);
00198     return edk_SUCCEEDED;
00199 }

DKC_INLINE int WINAPI dkc_wcscat2 wchar_t *  dest,
size_t  destsize,
const wchar_t *  src
 

destsizeはバイト単位・・・

dkcStdio.c141 行で定義されています。

参照元 dkcSemiRealRandomInit().

00143 {
00144     size_t dlen = wcslen(dest);
00145     size_t slen = wcslen(src);
00146 
00147     if(destsize / sizeof(wchar_t) < dlen + slen + 1)    return edk_FAILED;
00148     
00149     wcsncpy(&dest[dlen],src,slen);
00150     return edk_SUCCEEDED;
00151 }


dkutil_cに対してSat Sep 10 09:25:14 2005に生成されました。  doxygen 1.4.4