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

dkcOSIndependent.h

独立系 [詳細]

#include "dkcDefined.h"
#include <limits.h>
#include <float.h>
#include <assert.h>
#include <stdlib.h>
#include <direct.h>

dkcOSIndependent.hのインクルード依存関係図

Include dependency graph

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

Included by dependency graph

ソースコードを見る。

構成

struct  dkc_4char

マクロ定義

#define DWORD   uint32
#define WORD   uint16
#define BYTE   uint8
#define ULONGLONG   unsigned long long int
#define LONGLONG   long long int
#define TRUE   1
#define FALSE   0
#define NULL   0
#define dkcdPATH_SEP   '/'
#define dkcdPATH_SEP_STR   "/"
#define dkcdPATH_LIST_SEP   ':'
#define dkcdPATH_LIST_SEP_STR   ":"
#define dkcmIS_PATH_SEP(c)   (dkcdPATH_SEP==(c))
#define dkcmIS_INVALID_FILENAME_CHAR(c)
#define dkcmIS_INVALID_FOLDERNAME_CHAR(c)   dkcmIS_INVALID_FILENAME_CHAR(c)
#define dkcmIS_INVALID_PATH_CHAR(c)
#define ULONGLONG_MAX   DKINGYO_ULONGLONG_MAX
#define LONGLONG_MAX   DKINGYO_LONGLONG_MAX
#define LONGLONG_MIN   DKINGYO_LONGLONG_MIN
#define dkcdMAXPATH   1024
#define dkcdMAXPATH_LEN   dkcdMAXPATH
#define dkcdMAXPATH_BUFFER   dkcdMAXPATH * 2
 安全なMAX_PATHのバッファのサイズ なんかWindows2000だとこういう場合もあるらしいから

#define MAYBE   2
#define dkcmGETBYTE(x, y)   ((x)>>(8*(y)))
 this version of the macro is fastest on Pentium 3 and Pentium 4 with MSVC 6 SP5 w/ Processor Pack

#define dkcmGETBYTE8(x, y)   (uint8)dkcmGETBYTE(x,y)
#define dkcmGETBYTE32(x, y)   (uint32)dkcmGETBYTE8(x,y)
#define dkcmNOT_ASSERT_MESSAGE(ex, mes)   ((void)0)
#define dkcmASSERT_MESSAGE(ex, mes)   ((void)0)
#define dkcmNOT_ASSERT(ex)   ((void)0)
#define dkcmASSERT(ex)   ((void)0)
#define dkcmFORCE_NOT_ASSERT(ex)   ( (ex) && dkcErrorMessage(#ex,__FILE__,__LINE__,NULL) )
#define dkcmFORCE_ASSERT(ex)   ( (ex) || dkcErrorMessage(#ex,__FILE__,__LINE__,NULL) )
#define dkcmFORCE_NOT_ASSERT_MESSAGE(ex, mes)   ( (ex) && dkcErrorMessage(#ex,__FILE__,__LINE__,mes) )
#define dkcmFORCE_ASSERT_MESSAGE(ex, mes)   ( (ex) || dkcErrorMessage(#ex,__FILE__,__LINE__,mes) )
#define dkcmREVERSE_ENDIAN16(x)   ( (USHORT)( (x >> 8) | (x << 8) ) )
#define dkcmREVERSE_ENDIAN32(x)   ( (x << 24) | ( (x & 0x0000ff00) << 8) | ( (x & 0x00ff0000) >> 8 ) | (x >> 24) )
#define dkcmREVERSE_ENDIAN64(x)   dkcReverseEndian64(x)
#define dkcIsBigEndian()   (!dkcIsLittleEndian())
 big endianならTRUE


型定義

typedef unsigned long long QWORD
typedef unsigned char dkctBOOL
 boolean型

typedef void *(* DKC_REALLOC_F_TYPE )(void *, size_t)
typedef int BOOL
typedef aword DKC_4BYTE_UNION_BIG_ENDIAN_BASE
typedef dkc4ByteUnionLittleEndianBase DKC_4BYTE_UNION_LITTLE_ENDIAN_BASE
typedef void * DKC_WINAPI_PROC_F_TYPE
typedef dkc_4char DKC_4CHAR
typedef void *(WINAPIV * DKC_ALLOC_FUNC_TYPE )(size_t)
 malloc()系 関数の型

typedef void(WINAPIV * DKC_FREE_FUNC_TYPE )(void *)
 free()系 関数の型

typedef int(WINAPIV * DKC_COMPARE_TYPE )(const void *, const void *)

関数

DKC_EXTERN BOOL WINAPI dkcIsNativePathString (const char *s, size_t size)
 FALSEならNativeなファイルパスではない。.

DKC_EXTERN size_t dkcReallocateSizeFunction (size_t OldSize, size_t ExpandSize)
DKC_EXTERN void *WINAPIV dkcMallocAdapter (size_t)
DKC_EXTERN void WINAPIV dkcFreeAdapter (void *)
DKC_EXTERN void *WINAPIV dkcAllocate (size_t size)
DKC_EXTERN int WINAPIV dkcFree (void **p)
DKC_EXTERN void *WINAPIV dkcAllocateFast (size_t size)
DKC_EXTERN void *WINAPIV dkcAllocateFill (size_t size, BYTE fill)
DKC_EXTERN int WINAPI dkcReallocate (void **NewPtr, size_t NewSize, void **OldPtr)
DKC_EXTERN int WINAPI dkcReallocateEx (DKC_REALLOC_F_TYPE your_realloc, void **NewPtr, size_t NewSize, void **OldPtr)
 edk_SUCCEEDEDだったら成功

DKC_EXTERN int WINAPI dkcReallocateAutoExpand (DKC_REALLOC_F_TYPE your_realloc, void **NewPtr, void **OldPtr, size_t OldSize, size_t *reallocated_size)
DKC_EXTERN void WINAPI dkcSwap (void *p1, void *p2, size_t size)
DKC_EXTERN void WINAPI dkcSwapFast (void *p1, void *p2, size_t size)
DKC_EXTERN void WINAPI dkcSwap64 (ULONGLONG *p1, ULONGLONG *p2, size_t size)
DKC_EXTERN BOOL dkcIs_foepn_mode (const char *s)
 fopenの時の第二引数が有効な値かどうか調べる。

DKC_EXTERN FILE *WINAPI dkcFOpen (const char *filename, const char *mode)
 fopenのラッパー

DKC_EXTERN int WINAPI dkcFClose (FILE **ptr)
 fcloseのラッパー

DKC_EXTERN size_t WINAPI dkcFReadAll (void *, size_t size, FILE *fp)
 freadの全部責任持って読み込みますバージョン。(読み込めない場合はEOFかerror)

DKC_EXTERN size_t WINAPI dkcFWriteAll (void *, size_t size, FILE *fp)
 dkcFReadAll() dkcFReadAllのfwrite版

DKC_EXTERN int WINAPI dkcSaveBinary (const void *data, size_t size, const char *fname)
 fopenのファイル関数を使ってバイナリセーブを行う。 類似: dkcMemoryToFile()

DKC_EXTERN int WINAPI dkcLoadBinary (void *data, size_t size, const char *fname, size_t *readsize)
 バイナリデータをメモリに読み込む。dkcSaveBinary()と対 類似: dkcFileToMemory()

DKC_EXTERN int WINAPI dkcSaveText (const char *text, size_t length, const char *fname)
 fopenでテキストセーブを行う

DKC_EXTERN int WINAPI dkcLoadText (char *text, size_t length, const char *fname, size_t *readsize)
 テキストデータをメモリに読み込む。dkcSaveText()と対

DKC_EXTERN BOOL WINAPI dkcCreateEmptyFile (const char *filename)
 空ファイルを作る。

DKC_EXTERN void WINAPI dkcTwoDWORDToULONGLONG (ULONGLONG *dest, DWORD high, DWORD low)
DKC_EXTERN void WINAPI dkcULONGLONGToTwoDWORD (DWORD *dhigh, DWORD *dlow, ULONGLONG src)
DKC_EXTERN void WINAPI dkcLONGLONGToTwoLONG (LONG *high, LONG *low, LONGLONG src)
DKC_EXTERN void WINAPI dkcTwoLONGToLONGLONG (LONGLONG *dest, LONG high, LONG low)
DKC_EXTERN int WINAPI dkcErrorMessage (const char *expression, const char *filename, size_t line, const char *message,...)
DKC_EXTERN const char *WINAPI dkcGetPathSep ()
 path separatorの入った文字列(1byte毎にpath separatorの文字定数が入っている)をゲット

DKC_EXTERN int dkcDynamicCheckEnvironment (BOOL isForceExit)
DKC_EXTERN void WINAPI dkcCheckMemoryLeak (BOOL flag)
 flag[in] TRUEでチェックを有効

DKC_EXTERN BOOL WINAPI dkcIsMMX ()
 MMXが使えるならTRUE.

DKC_EXTERN ULONG dkcReverseEndian32 (ULONG x)
 General Function Library Copyright (C) 2000,2001 SYN All Rights Reserved.より.

DKC_EXTERN ULONGLONG dkcReverseEndian64 (ULONGLONG x)
 General Function Library Copyright (C) 2000,2001 SYN All Rights Reserved.より.

DKC_EXTERN USHORT dkcReverseEndian16 (USHORT x)
 endian change 16 bit version

DKC_EXTERN BOOL dkcIsLittleEndian ()
 little endian ならTRUE

DKC_EXTERN BOOL dkcCheckOverflowULONG (ULONG a1, ULONG a2)
 unsigned long型の二つの整数をプラスしたらオーバーフローするかどうかをチェックする。

DKC_EXTERN size_t dkcNumOfBits (uint32 bits)
DKC_EXTERN int WINAPI dkcSelect (void *dest, const void *a_src, size_t n, int k, size_t width,DKC_COMPARE_TYPE comp)
 いわいるセレクト(選択)アルゴリズム

DKC_EXTERN int WINAPI dkcSelectMax (void *dest, const void *a, size_t n, size_t width,DKC_COMPARE_TYPE comp)
DKC_EXTERN int WINAPI dkcSelectMin (void *dest, const void *a, size_t n, size_t width,DKC_COMPARE_TYPE comp)
DKC_INLINE int dkcRotateShiftRightMemoryLogic (void *dest, size_t size, size_t n, void *workbuff, size_t worksize)
DKC_EXTERN int WINAPI dkcRotateShiftRightMemory (void *dest, size_t size, size_t n)


説明

独立系

覚え書き:
詳しい説明はdkc.hに書いています。

dkcOSIndependent.h で定義されています。


マクロ定義

#define BYTE   uint8
 

dkcOSIndependent.h91 行で定義されています。

参照元 bse_basic_logic(), と ProcessCall().

#define dkcdMAXPATH   1024
 

dkcOSIndependent.h348 行で定義されています。

参照元 dkcPathStringConcatenate(), dkcPathStringCopy(), と dkcSemiRealRandomInit().

#define dkcdMAXPATH_BUFFER   dkcdMAXPATH * 2
 

安全なMAX_PATHのバッファのサイズ なんかWindows2000だとこういう場合もあるらしいから

dkcOSIndependent.h365 行で定義されています。

参照元 dkcAllocPathString(), dkcCreateDirectory(), dkcGetCurrentDirectory(), dkcIsEffectivePath(), dkcPathStringNormalizeConcatenateLogic(), dkcPathStringNormalizeCopyLogic(), と dkcToAbsolutelyPath().

#define dkcdMAXPATH_LEN   dkcdMAXPATH
 

dkcOSIndependent.h354 行で定義されています。

参照元 dkcCreateDirectory(), と dkcCurrentDirectoryConcatenate().

#define dkcdPATH_LIST_SEP   ':'
 

dkcOSIndependent.h117 行で定義されています。

#define dkcdPATH_LIST_SEP_STR   ":"
 

dkcOSIndependent.h118 行で定義されています。

#define dkcdPATH_SEP   '/'
 

dkcOSIndependent.h115 行で定義されています。

参照元 dkcCreateDirectory(), dkcGetPathSep(), dkcPathStringGetDirectory(), と dkcPushBackPathSep().

#define dkcdPATH_SEP_STR   "/"
 

dkcOSIndependent.h116 行で定義されています。

参照元 dkcPathStringNormalizeConcatenateLogic().

 
#define dkcIsBigEndian  )     (!dkcIsLittleEndian())
 

big endianならTRUE

dkcOSIndependent.h640 行で定義されています。

#define dkcmASSERT ex   )     ((void)0)
 

dkcOSIndependent.h592 行で定義されています。

参照元 dkc2TreeFindEqual(), dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkcHMACDigest(), dkcHMACDigestStr(), dkcHMACInit(), dkcHMACKeyInner(), dkcHMACLoad(), と find_lg_base().

#define dkcmASSERT_MESSAGE ex,
mes   )     ((void)0)
 

dkcOSIndependent.h590 行で定義されています。

#define dkcmFORCE_ASSERT ex   )     ( (ex) || dkcErrorMessage(#ex,__FILE__,__LINE__,NULL) )
 

dkcOSIndependent.h596 行で定義されています。

#define dkcmFORCE_ASSERT_MESSAGE ex,
mes   )     ( (ex) || dkcErrorMessage(#ex,__FILE__,__LINE__,mes) )
 

dkcOSIndependent.h598 行で定義されています。

#define dkcmFORCE_NOT_ASSERT ex   )     ( (ex) && dkcErrorMessage(#ex,__FILE__,__LINE__,NULL) )
 

dkcOSIndependent.h595 行で定義されています。

参照元 BufferResize(), check_init(), dkcArrayOneByOnePop(), dkcCRCLoadBlock(), dkcFileCopyEx(), dkcFreeThreadLock(), dkcPathStringGetFileName(), dkcSemiRealRandomInit(), dkcThreadLock_Lock(), dkcThreadLock_Unlock(), dkcThreadLockIsLockedByThisThread(), load_dll(), と setData().

#define dkcmFORCE_NOT_ASSERT_MESSAGE ex,
mes   )     ( (ex) && dkcErrorMessage(#ex,__FILE__,__LINE__,mes) )
 

dkcOSIndependent.h597 行で定義されています。

#define dkcmGETBYTE x,
 )     ((x)>>(8*(y)))
 

this version of the macro is fastest on Pentium 3 and Pentium 4 with MSVC 6 SP5 w/ Processor Pack

dkcOSIndependent.h376 行で定義されています。

参照元 update().

#define dkcmGETBYTE32 x,
 )     (uint32)dkcmGETBYTE8(x,y)
 

dkcOSIndependent.h378 行で定義されています。

#define dkcmGETBYTE8 x,
 )     (uint8)dkcmGETBYTE(x,y)
 

dkcOSIndependent.h377 行で定義されています。

#define dkcmIS_INVALID_FILENAME_CHAR  ) 
 

値:

( ((c) =='\\') || ((c)=='/') || ((c)=='*') || ((c)=='?') \
        || ((c)== '"') || ((c) == '<') || ((c) == '>') || ((c) == '|') )

dkcOSIndependent.h121 行で定義されています。

#define dkcmIS_INVALID_FOLDERNAME_CHAR  )     dkcmIS_INVALID_FILENAME_CHAR(c)
 

dkcOSIndependent.h124 行で定義されています。

参照元 dkcCreateDirectory().

#define dkcmIS_INVALID_PATH_CHAR  ) 
 

値:

( ( (c)=='\\') || ((c)=='*') || ((c)=='?') || ((c)== '"') || \
    ((c) == '<') || ((c) == '>') || ((c) == '|') )

dkcOSIndependent.h127 行で定義されています。

参照元 dkcIsNativePathString().

#define dkcmIS_PATH_SEP  )     (dkcdPATH_SEP==(c))
 

dkcOSIndependent.h119 行で定義されています。

参照元 dkcCreateDirectory().

#define dkcmNOT_ASSERT ex   )     ((void)0)
 

dkcOSIndependent.h591 行で定義されています。

参照元 dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkcAllocBufferCopy(), dkcAllocCircularMemoryStreamCopy(), dkcAllocDeserialize(), dkcAllocMemoryStreamCopy(), dkcAllocMemoryStreamDeserialize(), dkcAllocQueueDeserialize(), dkcAllocSerialize(), dkcAllocSingleListDeserialize(), dkcAllocSingleListObjectDeserialize(), dkcAllocStackDeserialize(), dkcArrayOneByOneSize(), dkcCreateDirectory(), dkcCurrentDirectoryConcatenate(), dkcDeserializeRead(), dkcDirectoryConcatenate(), dkcFileBinaryCompare(), dkcFReadAll(), dkcFreeStream(), dkcFWriteAll(), dkcHC256EncryptBlock512DOE(), dkcHC256EncryptBlock512NoDestDOE(), dkcHMACFinal(), dkcIsRelativityPath(), dkcLONGLONGToTwoLONG(), dkcLZSSEncode(), dkcMemoryStreamClear(), dkcMemoryStreamSerialize(), dkcPathStringConcatenate(), dkcPathStringCopy(), dkcPathStringDevideBegin_Logic(), dkcPathStringNormalizeCopyLogic(), dkcQueuePop(), dkcQueuePush(), dkcQueueSerialize(), dkcQueueTop(), dkcSameObjectPoolAlloc(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSerializeWrite(), dkcSetCurrentDirectory(), dkcSingleListChain(), dkcSingleListInsert(), dkcSingleListSerialize(), dkcSNOW2EncryptBlock512NoDestDOE(), dkcStackPop(), dkcStackPush(), dkcStackSerialize(), dkcStackTop(), dkcStreamReadObayAnOrder(), dkcStreamWriteObayAnOrder(), dkcStringConcatenate(), dkcStringCopy(), dkcStringInsert(), dkcStringSerialize(), dkcSwapFast(), dkcThreadLock_Unlock(), dkcULONGLONGToTwoDWORD(), free_2tree_node(), と SetStreamInfo().

#define dkcmNOT_ASSERT_MESSAGE ex,
mes   )     ((void)0)
 

dkcOSIndependent.h589 行で定義されています。

参照元 dkcCreateDirectory().

#define dkcmREVERSE_ENDIAN16  )     ( (USHORT)( (x >> 8) | (x << 8) ) )
 

dkcOSIndependent.h615 行で定義されています。

#define dkcmREVERSE_ENDIAN32  )     ( (x << 24) | ( (x & 0x0000ff00) << 8) | ( (x & 0x00ff0000) >> 8 ) | (x >> 24) )
 

dkcOSIndependent.h617 行で定義されています。

#define dkcmREVERSE_ENDIAN64  )     dkcReverseEndian64(x)
 

dkcOSIndependent.h627 行で定義されています。

#define DWORD   uint32
 

dkcOSIndependent.h85 行で定義されています。

参照元 Ch(), dkcAllocBlowfish(), dkcAllocThreadLock(), dkcBlowfishDecrypt(), dkcBlowfishEncrypt(), dkcBlowfishGetOutputLength(), dkcBlowfishInit(), dkcFileBinaryCompare(), dkcFileToMemory(), dkcReverseEndian32(), dkcReverseEndian64(), dkcSHA1Final(), dkcSHA1Load(), dkcSHA256Final(), dkcSHA256Load(), dkcSHA512DigestStr(), dkcSHA512Load(), dkcThreadLock_Unlock(), dkcThreadLockIsLockedByThisThread(), dkcULONGLONGToTwoDWORD(), Generate(), Maj(), ReverseEndian(), ReverseEndianDWORD(), Rotate(), s0(), S0(), s1(), と S1().

#define FALSE   0
 

dkcOSIndependent.h108 行で定義されています。

参照元 bse_sorted_table_to_data(), dkc2TreeErase(), dkc2TreeExist(), dkc_stream_swap(), dkcAllocCRC_32left(), dkcAllocCRC_7left(), dkcAllocCRC_ansi16right(), dkcAllocCRC_ccitt_left(), dkcAllocDeserialize(), dkcAllocPathString(), dkcAllocSameObjectPool(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamRead(), dkcCircularMemoryStreamReadLogic(), dkcCircularStreamRead(), dkcCircularStreamReadLogic(), dkcCombSort(), dkcCreateDirectory(), dkcCreateEmptyFile(), dkcCreateZeroByteFile(), dkcFileBinaryCompare(), dkcFileCopy(), dkcFileCopyEx(), dkcFileExist(), dkcFileSize64(), dkcFileToMemory(), dkcFileWithSignatureCheckCheat(), dkcGetCurrentDirectory(), dkcHMACFinal(), dkcHMACInit(), dkcHMACLoad(), dkcIs_foepn_mode(), dkcIsEffectivePath(), dkcIsMMX(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcIsTailPathSep(), dkcLZSSDecode(), dkcMD5Init(), dkcOpenFileWithSignature(), dkcPathStringElementInsert_Logic(), dkcPathStringElementReplace_Logic(), dkcPathStringNormalizeConcatenateLogic(), dkcPushBackPathSep(), dkcSameObjectPoolAlloc(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSecureHashCalculateStringDigest(), dkcSemiRealRandomGet32(), dkcSetCurrentDirectory(), dkcSHA1Digest(), dkcSHA1DigestStr(), dkcSHA1Init(), dkcSHA256Digest(), dkcSHA256DigestStr(), dkcSHA256Init(), dkcSHA384Digest(), dkcSHA384DigestStr(), dkcSHA384Init(), dkcSHA512Digest(), dkcSHA512DigestStr(), dkcSHA512Init(), dkcSHOLoad(), dkcStreamEOF(), dkcStreamError(), Encode(), generate(), SetStreamInfo(), と test().

#define LONGLONG   long long int
 

dkcOSIndependent.h100 行で定義されています。

参照元 dkcLONGLONGToTwoLONG(), と dkcTwoLONGToLONGLONG().

#define LONGLONG_MAX   DKINGYO_LONGLONG_MAX
 

dkcOSIndependent.h330 行で定義されています。

#define LONGLONG_MIN   DKINGYO_LONGLONG_MIN
 

dkcOSIndependent.h333 行で定義されています。

#define MAYBE   2
 

dkcOSIndependent.h371 行で定義されています。

#define NULL   0
 

dkcOSIndependent.h112 行で定義されています。

参照元 alloc_2tree_node(), alloc_set(), alloc_table2d(), blockDecrypt(), blockEncrypt(), bsd_basic_logic(), bse_basic_logic(), cipherInit(), dkc2TreeErase(), dkc2TreeEraseFromKey(), dkc2TreeExist(), dkc2TreeFindEqual(), dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkc2TreeInsert(), dkc2TreeSetBuffer(), dkc_memcpy_zc(), dkcAlloc2TreeRoot(), dkcAllocArcfour(), dkcAllocArcfour2Byte(), dkcAllocArrayOneByOne(), dkcAllocateFill(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocBufferCopy(), dkcAllocCircularMemoryStream(), dkcAllocCircularMemoryStreamCopy(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocDeserialize(), dkcAllocHC256(), dkcAllocHMAC(), dkcAllocMD5(), dkcAllocMemoryStream(), dkcAllocMemoryStreamCopy(), dkcAllocMemoryStreamDeserialize(), dkcAllocNewCircularStream(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocQueueDeserialize(), dkcAllocReplace(), dkcAllocRijndael(), dkcAllocRijndaelDecrypt(), dkcAllocRijndaelEncrypt(), dkcAllocSameObjectPool(), dkcAllocSameObjectPoolDynamic(), dkcAllocSemiRealRandomFromGFS(), dkcAllocSemiRealRandomWin32(), dkcAllocSerialize(), dkcAllocSHA1(), dkcAllocSHA256(), dkcAllocSHA384(), dkcAllocSHA512(), dkcAllocSHO(), dkcAllocSingleList(), dkcAllocSingleListBuffer(), dkcAllocSingleListDeserialize(), dkcAllocSingleListObject(), dkcAllocSingleListObjectDeserialize(), dkcAllocSNOW2(), dkcAllocStack(), dkcAllocStackDeserialize(), dkcAllocStream(), dkcAllocStreamEncouragementFileType(), dkcAllocStreamFileType(), dkcAllocStreamMemoryType(), dkcAllocString(), dkcAllocStringDeserialize(), dkcAllocTaskEngine(), dkcAllocThreadLock(), dkcAllocUniqueID(), dkcBlowfishEncrypt(), dkcBufferResize(), dkcCircularMemoryStreamClear(), dkcCircularMemoryStreamReadLogic(), dkcCircularMemoryStreamWrite(), dkcCircularStreamDump(), dkcCircularStreamReadLogic(), dkcCircularStreamWrite(), dkcCircularStreamZero(), dkcCloseFileWithSignature(), dkcCreateDirectory(), dkcCreateEmptyFile(), dkcDeleteCircularStream(), dkcDeleteSingleList(), dkcDeserializeRead(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcEasyVernamEncrypt(), dkcErrorMessage(), dkcFClose(), dkcFileBinaryCompare(), dkcFileCopyEx(), dkcFileSize64(), dkcFileToMemory(), dkcFindClose(), dkcFindFileGetFileName(), dkcFindFirstFile(), dkcFree(), dkcFree2TreeRoot(), dkcFree2TreeWithVector(), dkcFreeArcfour(), dkcFreeArcfour2Byte(), dkcFreeArrayOneByOne(), dkcFreeBlowfish(), dkcFreeBuffer(), dkcFreeCircularMemoryStream(), dkcFreeDeleteCircularStream(), dkcFreeDeque(), dkcFreeDeserialize(), dkcFreeFindFile(), dkcFreeGenericFileSystem(), dkcFreeHMAC(), dkcFreeLZSS(), dkcFreeMD5(), dkcFreeMemoryStream(), dkcFreePathString(), dkcFreeQueue(), dkcFreeReplace(), dkcFreeRijndael(), dkcFreeRLE(), dkcFreeSameObjectPool(), dkcFreeSemiRealRandom(), dkcFreeSerialize(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkcFreeSHO(), dkcFreeSingleList(), dkcFreeSingleListObject(), dkcFreeStack(), dkcFreeStream(), dkcFreeString(), dkcFreeThreadLock(), dkcFreeUniqueID(), dkcGenericFileSystemOpen(), dkcGetCurrentDirectory(), dkcGetProcAddress(), dkcGetSingleListBuffer(), dkcHC256EncryptBlock512DOE(), dkcHC256EncryptBlock512NoDestDOE(), dkcHMACFinal(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcLoadFile(), dkcLoadLibrary(), dkcLZSSDecode(), dkcLZSSEncode(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamClear(), dkcMemoryStreamDynamicWrite(), dkcMemoryStreamRead(), dkcMemoryStreamResize(), dkcMemoryStreamSeek(), dkcMemoryStreamSerialize(), dkcMemoryStreamWrite(), dkcMemoryToFile(), dkcNewCircularStream(), dkcNewCircularStreamForFile(), dkcNewSingleList(), dkcOpenFileWithSignature(), dkcPathStringDevideBegin_Logic(), dkcPathStringGetFileName(), dkcPathStringNormalizeCopyLogic(), dkcQueueClear(), dkcQueuePop(), dkcQueuePush(), dkcQueueSerialize(), dkcQueueTop(), dkcReallocateAutoExpand(), dkcReallocateEx(), dkcRijndaelStringKey(), dkcRotateShiftRightMemory(), dkcSameObjectPoolAlloc(), dkcSameObjectPoolInit(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSameObjectPoolUninit(), dkcSaveFile(), dkcSelect(), dkcSerializeWrite(), dkcSingleListChain(), dkcSingleListErase(), dkcSingleListGetBuffer(), dkcSingleListInsert(), dkcSingleListSerialize(), dkcSingleListSetBuffer(), dkcSingleListSize(), dkcSingleListTail(), dkcSLOEndLogic(), dkcSNOW2Init(), dkcStackPop(), dkcStackPush(), dkcStackSerialize(), dkcStackTop(), dkcStreamProcess16(), dkcStreamProcess32(), dkcStreamProcess64(), dkcStreamRead(), dkcStreamReadObayAnOrder(), dkcStreamWrite16(), dkcStreamWrite32(), dkcStreamWrite64(), dkcStringConcatenate(), dkcStringCopy(), dkcStringGetBuffer(), dkcStringInsert(), dkcStringSerialize(), dkcStrStr(), dkcSwapFast(), dkcThreadLock_Lock(), dkcThreadLock_Unlock(), dkcThreadLockIsLockedByThisThread(), dkcToAbsolutelyPath(), dkcUnityArchiversCommand(), dkcUnloadLibrary(), dkcVernamEncrypt(), FileWithSignatureReadLogic(), find_lg_base(), free_2tree_node(), free_table2d(), GetHeader(), load_dll(), makeKey(), padDecrypt(), padEncrypt(), shc(), ToAbsolutelyLogic(), と tree_exist_reflexive().

#define TRUE   1
 

dkcOSIndependent.h105 行で定義されています。

参照元 bse_sorted_table_to_data(), cipherInit(), Decode(), dkc2TreeExist(), dkc_stream_swap(), dkcAllocCRC_32right(), dkcAllocCRC_7right(), dkcAllocCRC_ansi16left(), dkcAllocCRC_ccitt_right(), dkcAllocCRC_xmodem(), dkcAllocSerialize(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamReference(), dkcCircularStreamReference(), dkcCombSort(), dkcCreateEmptyFile(), dkcCreateZeroByteFile(), dkcErrorMessage(), dkcFileCopyEx(), dkcFileSize64(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcGetCurrentDirectory(), dkcHMACInit(), dkcHMACKeyInner(), dkcIs_foepn_mode(), dkcIsEffectivePath(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcIsTailPathSep(), dkcMD5Final(), dkcMemoryToFile(), dkcOpenFileWithSignature(), dkcRijndaelErrorMessage(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSecureHashCalculateBinaryDigest(), dkcSemiRealRandomGet32(), dkcSHA1Final(), dkcSHA256Final(), dkcSHA512Final(), dkcSHOInit(), dkcSLOPushBackLogic(), dkcStreamEOF(), dkcStreamError(), dkcToAbsolutelyPath(), generate(), InsertNode(), makeKey(), ReadEOFCheck(), SetStreamInfo(), と tree_exist_reflexive().

#define ULONGLONG   unsigned long long int
 

dkcOSIndependent.h96 行で定義されています。

参照元 dkcCloseFileWithSignature(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcReverseEndian64(), dkcStreamProcess64(), dkcSwap(), dkcSwap64(), dkcTwoDWORDToULONGLONG(), dkcULONGLONGToTwoDWORD(), と ReadEOFCheck().

#define ULONGLONG_MAX   DKINGYO_ULONGLONG_MAX
 

dkcOSIndependent.h327 行で定義されています。

#define WORD   uint16
 

dkcOSIndependent.h88 行で定義されています。


型定義

typedef int BOOL
 

dkcOSIndependent.h134 行で定義されています。

参照元 bse_sorted_table_to_data(), CheckMMX(), Decode(), dkc_stream_swap(), dkcAllocSemiRealRandomWin32(), dkcAllocStreamEncouragementFileType(), dkcCheckMemoryLeak(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamReadLogic(), dkcCircularStreamReadLogic(), dkcCombSort(), dkcCRCFinal(), dkcCRCLoadBlock(), dkcCreateDirectory(), dkcCreateDirectoryLogic(), dkcCreateEmptyFile(), dkcCreateZeroByteFile(), dkcDynamicCheckEnvironment(), dkcFileBinaryCompare(), dkcFileCopy(), dkcFileCopyEx(), dkcFileExist(), dkcFileRemove(), dkcFileRename(), dkcFileSize64(), dkcFindFileIsDot(), dkcFindFileIsFolder(), dkcFindFileIsNormalFile(), dkcFindFileIsReadOnly(), dkcGetCurrentDirectory(), dkcIs_foepn_mode(), dkcIsAbsolutelyPath(), dkcIsEffectivePath(), dkcIsLittleEndian(), dkcIsMMX(), dkcIsRelativityPath(), dkcIsSJIS1(), dkcIsSJIS2(), dkcIsSpace(), dkcIsTailPathSep(), dkcMemoryToFile(), dkcOpenFileWithSignature(), dkcQueueIsEmpty(), dkcRijndaelErrorMessage(), dkcSameObjectPoolInit(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSemiRealRandomGet32(), dkcSetCurrentDirectory(), dkcSLOEmptyLogic(), dkcSLOEndLogic(), dkcSLOPushBackLogic(), dkcStackIsEmpty(), dkcStreamEOF(), dkcStreamError(), dkcTaskEngineEmpty(), dkcThreadLockIsLockedByThisThread(), Encode(), FileWithSignatureIsFinalized(), find_lg_base(), generate(), index(), isDoubleProcess(), jms1(), jms2(), load_dll(), makecrctable16(), makecrctable32(), reflection(), SetStreamInfo(), と shift().

typedef union aword DKC_4BYTE_UNION_BIG_ENDIAN_BASE
 

dkcOSIndependent.h298 行で定義されています。

typedef union dkc4ByteUnionLittleEndianBase DKC_4BYTE_UNION_LITTLE_ENDIAN_BASE
 

dkcOSIndependent.h300 行で定義されています。

参照元 h1(), と h2().

typedef struct dkc_4char DKC_4CHAR
 

typedef void*( WINAPIV * DKC_ALLOC_FUNC_TYPE)(size_t)
 

malloc()系 関数の型

dkcOSIndependent.h464 行で定義されています。

参照元 alloc_sameobjectpool_outer(), dkcAllocSameObjectPool(), と dkcSameObjectPoolInit().

typedef int(WINAPIV * DKC_COMPARE_TYPE)(const void *,const void *)
 

dkcOSIndependent.h654 行で定義されています。

参照元 dkc2TreeEraseFromKey(), dkc2TreeFindEqual(), dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkc2TreeInsert(), dkcAlloc2TreeRoot(), dkcSelect(), dkcSelectMax(), dkcSelectMin(), と find_lg_base().

typedef void(WINAPIV * DKC_FREE_FUNC_TYPE)(void *)
 

free()系 関数の型

dkcOSIndependent.h466 行で定義されています。

参照元 dkcAllocSameObjectPool(), dkcSameObjectPoolInit(), と free_sameobjectpool_outer().

typedef void *(* DKC_REALLOC_F_TYPE)(void *, size_t)
 

dkcOSIndependent.h132 行で定義されています。

参照元 dkcReallocateAutoExpand(), と dkcReallocateEx().

typedef void* DKC_WINAPI_PROC_F_TYPE
 

dkcOSIndependent.h317 行で定義されています。

参照元 dkcSHO_MD5Init(), dkcSHO_SHA1Init(), dkcSHO_SHA256Init(), dkcSHO_SHA384Init(), と dkcSHO_SHA512Init().

typedef unsigned char dkctBOOL
 

boolean型

dkcOSIndependent.h65 行で定義されています。

参照元 dkcAllocCRC(), dkcCRCInit(), と shc().

typedef unsigned long long QWORD
 

dkcOSIndependent.h61 行で定義されています。

参照元 Ch(), Default_Generate(), dkcSHA512Final(), dkcSHA512Load(), Maj(), ReverseEndianQWORD(), Rotate(), s0(), S0(), s1(), と S1().


関数

DKC_EXTERN void* WINAPIV dkcAllocate size_t  size  ) 
 

dkcOSIndependent.c170 行で定義されています。

参照先 dkcAllocateFill().

参照元 alloc_sameobjectpool(), dkcAlloc2TreeRoot(), dkcAllocArcfour(), dkcAllocArcfour2Byte(), dkcAllocArrayOneByOne(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocCircularMemoryStream(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocDeserialize(), dkcAllocFindFile(), dkcAllocHC256(), dkcAllocHMAC(), dkcAllocLZSS(), dkcAllocMD5(), dkcAllocMemoryStream(), dkcAllocNewCircularStream(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocReplace(), dkcAllocRijndael(), dkcAllocRijndaelDecrypt(), dkcAllocRijndaelEncrypt(), dkcAllocRLE(), dkcAllocSemiRealRandomFromGFS(), dkcAllocSemiRealRandomWin32(), dkcAllocSerialize(), dkcAllocSHA1(), dkcAllocSHA256(), dkcAllocSHA384(), dkcAllocSHA512(), dkcAllocSHO(), dkcAllocSingleList(), dkcAllocSingleListObject(), dkcAllocSNOW2(), dkcAllocStack(), dkcAllocStream(), dkcAllocString(), dkcAllocTaskEngine(), dkcAllocThreadLock(), dkcAllocUniqueID(), dkcCircularStreamDump(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcLoadLibrary(), dkcNewSingleList(), と dkcOpenFileWithSignature().

00170                                          {
00171     return dkcAllocateFill(size,0); 
00172 /*void *ptr;
00173     ptr = dkcAllocateFast(size);
00174     if(NULL==ptr) return NULL;
00175     memset(ptr,0,size);
00176     return ptr;
00177     */
00178 }

DKC_EXTERN void* WINAPIV dkcAllocateFast size_t  size  ) 
 

dkcOSIndependent.c167 行で定義されています。

参照元 alloc_2tree_node(), dkcAllocateFill(), と dkcSameObjectPoolReserveFast().

00167                                              {
00168     return malloc(size);
00169 }

DKC_EXTERN void* WINAPIV dkcAllocateFill size_t  size,
BYTE  fill
 

dkcOSIndependent.c161 行で定義されています。

参照先 BYTE, dkcAllocateFast(), と NULL.

参照元 dkcAllocate().

00161                                                        {
00162     void *p = dkcAllocateFast(size);
00163     if(NULL==p) return NULL;
00164     memset(p,fill,size);
00165     return p;
00166 }

DKC_EXTERN void WINAPI dkcCheckMemoryLeak BOOL  flag  ) 
 

flag[in] TRUEでチェックを有効

dkcOSIndependent.c631 行で定義されています。

参照先 BOOL.

00631                                          {
00632 
00633 }

DKC_EXTERN BOOL dkcCheckOverflowULONG ULONG  a1,
ULONG  a2
 

unsigned long型の二つの整数をプラスしたらオーバーフローするかどうかをチェックする。

dkcOSIndependent.c706 行で定義されています。

参照先 BOOL, FALSE, と TRUE.

参照元 dkcMemoryStreamAdapterPushBack(), dkcRLEPackBitsDecode(), と dkcRLEPackBitsEncode().

00706                                                         {
00707     ULONG maxv = ULONG_MAX;
00708   ULONG halfv = maxv / 2 ;
00709   ULONG x = a1,y = a2;
00710   if(x < y){
00711     SWAP_NUM(x,y);
00712   }
00713   if(x > halfv + 1){
00714     if(y >= halfv){
00715       return TRUE;
00716     }
00717   }
00718   return FALSE;
00719 }

DKC_EXTERN BOOL WINAPI dkcCreateEmptyFile const char *  filename  ) 
 

空ファイルを作る。

dkcOSIndependent.c446 行で定義されています。

参照先 BOOL, FALSE, NULL, と TRUE.

参照元 dkcFileCopyEx().

00446                                                     {
00447     FILE *fp;
00448     fp = fopen( filename , "wb" ) ;//wb
00449     if(fp==NULL) return FALSE;
00450     fclose( fp ) ;
00451     return TRUE;
00452 }

DKC_EXTERN int dkcDynamicCheckEnvironment BOOL  isForceExit  ) 
 

引数:
isForceExit[in] TRUEを指定するとdkutil_cの奨励環境と違った場合、強制終了する。
戻り値:
edk_Result

dkcOSIndependent.c47 行で定義されています。

参照先 BOOL.

00047                                                 {
00048 
00049 }

DKC_EXTERN int WINAPI dkcErrorMessage const char *  expression,
const char *  filename,
size_t  line,
const char *  message,
... 
 

戻り値:
almost TRUE(1)

dkcOSIndependent.c68 行で定義されています。

参照先 MB, NULL, ODS, と TRUE.

00070 {
00071     char s[1024];
00072     char ss[1024 * 2];
00073     
00074     int va_list_result;
00075     va_list Valist;
00076 
00077     NULL_CHAR_ARRAY(s);
00078     NULL_CHAR_ARRAY(ss);
00079     
00080     if(message){
00081         SET_VA_LIST_C(Valist,va_list_result,s,sizeof(s),message);
00082     }else{
00083         //SET_VA_LIST(s,sizeof(s),"No message");
00084         _snprintf(s,sizeof(s),"No message\n");
00085     }
00086 
00087     _snprintf(ss,sizeof(ss),
00088         "DKUTIL_ASSERT(%s):\nfile:%s / \n line:%d / \n message: %s",
00089         expression,filename,line,s);
00090 
00091 
00092 
00093 #ifdef NDEBUG//release
00094 #   ifdef WIN32
00095         ODS(ss);
00096     //::MessageBox(NULL,ss,"ERROR ASSERTION !!",MB_OK);
00097     {
00098         LPCTSTR name="ERROR_TEMP.txt";
00099         {
00100             //ファイルをオープン
00101             FILE *fp;
00102             if(NULL != (fp = fopen( name , "at" ))){
00103             
00104                 // エラーログファイルに書き出す
00105                 fputs( ss , fp ) ;
00106                 fclose( fp ) ;
00107                 Sleep(800);
00108             }
00109         }
00110         ShellExecute(NULL, "open",name, NULL, NULL, SW_SHOWNORMAL);
00111         //Sleep(1000);
00112         //DeleteFile(name);
00113     }
00114     MB("このテキストをこのソフトの開発者に渡せば、バグ発見の近道なります。\n \
00115         開発者に知らせるときはこのテキストを転記してあげましょう。");
00116     if(IDYES==MessageBox(NULL,
00117         "このままこのソフトを起動しつづけると、更なるエラーが発生する可能性があります。\n終了しますか?",
00118         "あってはいけない エラー!!!",
00119         MB_YESNO))
00120     {
00121         exit(edk_FAILED);
00122         //terminate();
00123     }else{
00124     }
00125 #   else    //else of win32
00126     
00127     fprintf(stderr,ss);
00128     exit(edk_FAILED);
00129 
00130 #   endif //end of win32
00131 
00132 #else //debug
00133 
00134 #   ifdef WIN32
00135         ODS(ss);
00136     fprintf(stderr,ss);
00137     //_CrtDebugBreak();
00138     DebugBreak();
00139 #   else //else of win32
00140 
00141     fprintf(stderr,ss);
00142     Debugger();
00143 
00144 #   endif //end of win32
00145 #endif//end of NDEBUG
00146     //assert(ss);
00147     
00148     return TRUE;
00149 }

DKC_EXTERN int WINAPI dkcFClose FILE **  ptr  ) 
 

fcloseのラッパー

dkcOSIndependent.c346 行で定義されています。

参照先 NULL.

参照元 dkcDeleteCircularStream(), dkcFileCopyEx(), dkcFreeStream(), と GetHeader().

00346                                            {
00347     if(NULL==ptr || NULL==*ptr) return edk_ArgumentException;
00348     fclose(*ptr);
00349     *ptr = NULL;
00350     return edk_SUCCEEDED;
00351 }

DKC_EXTERN FILE* WINAPI dkcFOpen const char *  filename,
const char *  mode
 

fopenのラッパー

dkcOSIndependent.c342 行で定義されています。

参照元 dkcAllocStream(), dkcFileCopyEx(), dkcNewCircularStreamForFile(), と GetHeader().

00342                                                                         {
00343     return fopen(filename,mode);
00344 }

DKC_EXTERN size_t WINAPI dkcFReadAll void *  ,
size_t  size,
FILE *  fp
 

freadの全部責任持って読み込みますバージョン。(読み込めない場合はEOFかerror)

dkcOSIndependent.c352 行で定義されています。

参照先 BYTE, と dkcmNOT_ASSERT.

参照元 GetHeader().

00353 {
00354     size_t count;
00355     size_t tc,tsize;
00356     BYTE *tbuffer;
00357 
00358     //read size
00359     tsize = size;
00360     //temp variable
00361     tc = 0;
00362     //offset counter
00363     count = 0;
00364     //byte type pointer
00365     tbuffer = (BYTE *)buffer;
00366     for(;;)
00367     {
00368         //error check
00369         if(ferror(fp) ){
00370             break;
00371         }
00372         if(feof(fp)){
00373             break;
00374         }
00375         //read
00376         tc = fread(&tbuffer[count],1,tsize,fp);
00377         //update
00378         tsize -= tc;
00379         count += tc;
00380 
00381         if(count == size){
00382             break;
00383         }
00384 #   ifdef DEBUG
00385         //ありえないエラーチェック
00386         dkcmNOT_ASSERT(count > size);
00387 #   else
00388         if(count > size){
00389             break;
00390         }
00391 #   endif
00392     }
00393     return count;
00394 }

DKC_EXTERN int WINAPIV dkcFree void **  p  ) 
 

dkcOSIndependent.c180 行で定義されています。

参照先 NULL.

参照元 dkcAlloc2TreeRoot(), dkcAllocArrayOneByOne(), dkcAllocBuffer(), dkcAllocCircularMemoryStream(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocDeserialize(), dkcAllocMemoryStream(), dkcAllocNewCircularStream(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocReplace(), dkcAllocRijndael(), dkcAllocSerialize(), dkcAllocSingleList(), dkcAllocSingleListObject(), dkcAllocStack(), dkcAllocStream(), dkcAllocString(), dkcAllocTaskEngine(), dkcAllocUniqueID(), dkcCloseFileWithSignature(), dkcDeleteCircularStream(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcFreeArcfour(), dkcFreeArcfour2Byte(), dkcFreeArrayOneByOne(), dkcFreeBlowfish(), dkcFreeBuffer(), dkcFreeCircularMemoryStream(), dkcFreeCRC(), dkcFreeDeleteCircularStream(), dkcFreeDeque(), dkcFreeDeserialize(), dkcFreeFindFile(), dkcFreeGenericFileSystem(), dkcFreeHC256(), dkcFreeHMAC(), dkcFreeLZSS(), dkcFreeMD5(), dkcFreeMemoryStream(), dkcFreePathString(), dkcFreeQueue(), dkcFreeReplace(), dkcFreeRijndael(), dkcFreeRLE(), dkcFreeSemiRealRandom(), dkcFreeSerialize(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkcFreeSHO(), dkcFreeSingleListObject(), dkcFreeSNOW2(), dkcFreeStack(), dkcFreeStream(), dkcFreeString(), dkcFreeTaskEngine(), dkcFreeThreadLock(), dkcFreeUniqueID(), dkcLoadLibrary(), dkcOpenFileWithSignature(), dkcSingleListErase(), dkcUnloadLibrary(), free_2tree_node(), free_2tree_root(), と free_sameobjectpool().

00180                                  {
00181     if(!*p) return edk_FAILED;
00182     free(*p);
00183     *p = NULL;
00184     return edk_SUCCEEDED;
00185 }

DKC_EXTERN void WINAPIV dkcFreeAdapter void *   ) 
 

dkcOSIndependent.c155 行で定義されています。

参照元 dkcSameObjectPoolInit().

00155                                     {
00156     if(p){
00157         free(p);
00158     }
00159 }

DKC_EXTERN size_t WINAPI dkcFWriteAll void *  ,
size_t  size,
FILE *  fp
 

dkcFReadAll() dkcFReadAllのfwrite版

dkcOSIndependent.c396 行で定義されています。

参照先 BYTE, と dkcmNOT_ASSERT.

00396                                                                         {
00397     size_t count;
00398     size_t tc,tsize;
00399     BYTE *tbuffer;
00400 
00401     //read size
00402     tsize = size;
00403     //temp variable
00404     tc = 0;
00405     //offset counter
00406     count = 0;
00407     //byte type pointer
00408     tbuffer = (BYTE *)buffer;
00409     for(;;)
00410     {
00411         //error check
00412         if(ferror(fp) ){
00413             break;
00414         }
00415         if(feof(fp)){
00416             break;
00417         }
00418         //read
00419         tc = fwrite(&tbuffer[count],1,tsize,fp);
00420         //update
00421         tsize -= tc;
00422         count += tc;
00423 
00424         if(count == size){
00425             break;
00426         }
00427 #   ifdef DEBUG
00428         //ありえないエラーチェック
00429         dkcmNOT_ASSERT(count > size);
00430 #   else
00431         if(count > size){
00432             break;
00433         }
00434 #   endif
00435     }
00436     return count;
00437 
00438 }

DKC_EXTERN const char* WINAPI dkcGetPathSep  ) 
 

path separatorの入った文字列(1byte毎にpath separatorの文字定数が入っている)をゲット

dkcOSIndependent.c636 行で定義されています。

参照先 dkcdPATH_SEP.

参照元 dkcSJIS_SearchPathSep(), と dkcSJIS_SearchPathSepLast().

00636                                   {
00637 #ifdef WIN32
00638     static char target[3]={dkcdPATH_SEP,'/','\0'};
00639 #else
00640     static char target[3]={dkcdPATH_SEP,'\0'};
00641 #endif
00642     return target;
00643 }

DKC_EXTERN BOOL dkcIs_foepn_mode const char *  s  ) 
 

fopenの時の第二引数が有効な値かどうか調べる。

dkcOSIndependent.c186 行で定義されています。

参照先 BOOL, FALSE, と TRUE.

00186                                     {
00187     /* wrtb+ */
00188     const char *ms= "wrtb+";
00189     size_t slen = strlen(s);
00190     size_t mslen = strlen(ms);
00191     size_t i,j;
00192     int flag = FALSE;
00193     for(i=0;i<slen;i++){
00194         for(j=0;j<mslen;j++){
00195             if(ms[j]==s[i]){
00196                 flag = TRUE;
00197                 break;
00198             }
00199         }
00200         if(TRUE!=flag){
00201             return FALSE;
00202         }else{
00203             flag = FALSE;
00204         }
00205     }
00206     return TRUE;
00207 }

DKC_EXTERN BOOL dkcIsLittleEndian  ) 
 

little endian ならTRUE

dkcOSIndependent.c700 行で定義されています。

参照先 BOOL.

参照元 dkcOpenFileWithSignature(), GetHeader(), HeaderWrite(), と SetStreamInfo().

00700                                     {
00701     int x=1;
00702     return (BOOL)((*(char*)&x));
00703 }

DKC_EXTERN BOOL WINAPI dkcIsMMX  ) 
 

MMXが使えるならTRUE.

dkcOSIndependent.c677 行で定義されています。

参照先 BOOL, と FALSE.

参照元 CheckMMX().

00677                           {
00678   return FALSE;
00679 }

DKC_EXTERN BOOL WINAPI dkcIsNativePathString const char *  s,
size_t  size
 

FALSEならNativeなファイルパスではない。.

dkcOSIndependent.c54 行で定義されています。

参照先 dkcmIS_INVALID_PATH_CHAR, FALSE, NULL, と TRUE.

参照元 dkcAllocPathString(), dkcIsEffectivePath(), dkcPathStringElementInsert_Logic(), と dkcPathStringElementReplace_Logic().

00054                                                            {
00055 
00056     size_t i=0;
00057     if(s==NULL) return edk_FAILED;
00058     for(;i<size;i++){
00059         if(dkcmIS_INVALID_PATH_CHAR(s[i]))
00060         {
00061             return FALSE;
00062         }
00063     }
00064     return TRUE;
00065 }

DKC_EXTERN int WINAPI dkcLoadBinary void *  data,
size_t  size,
const char *  fname,
size_t *  readsize
 

バイナリデータをメモリに読み込む。dkcSaveBinary()と対 類似: dkcFileToMemory()

dkcOSIndependent.c455 行で定義されています。

参照先 dkcLoadFile().

参照元 dkcAllocDeserialize(), と dkcFileCopyEx().

00455                                                                                    {//="rb"
00456     return dkcLoadFile(data,size,fname,"rb",readsize);
00457 }

DKC_EXTERN int WINAPI dkcLoadText char *  text,
size_t  length,
const char *  fname,
size_t *  readsize
 

テキストデータをメモリに読み込む。dkcSaveText()と対

dkcOSIndependent.c462 行で定義されています。

参照先 dkcLoadFile().

00462                                                                                    {
00463     return dkcLoadFile(text,length,fname,"rt",readsize);
00464 }

DKC_EXTERN void WINAPI dkcLONGLONGToTwoLONG LONG *  high,
LONG *  low,
LONGLONG  src
 

dkcOSIndependent.c574 行で定義されています。

参照先 dkcmNOT_ASSERT, と LONGLONG.

00574                                                                               {
00575     LONG *o = (LONG *)&src;
00576     dkcmNOT_ASSERT(sizeof(LONG) * 2 != sizeof(LONGLONG));
00577     *high = o[0];
00578     *low = o[1];
00579 }

DKC_EXTERN void* WINAPIV dkcMallocAdapter size_t   ) 
 

dkcOSIndependent.c151 行で定義されています。

参照元 dkcSameObjectPoolAlloc(), と dkcSameObjectPoolInit().

00151                                         {
00152     return malloc(s);
00153 }

DKC_EXTERN size_t dkcNumOfBits uint32  bits  ) 
 

引数:
調べたい32bit変数@note Hacker's Delight より

dkcOSIndependent.c721 行で定義されています。

00721                                             {
00722   bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);
00723   bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
00724   bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);
00725   bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);
00726   return (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);
00727 }

DKC_EXTERN int WINAPI dkcReallocate void **  NewPtr,
size_t  NewSize,
void **  OldPtr
 

dkcOSIndependent.c241 行で定義されています。

参照先 dkcReallocateEx().

参照元 dkc2TreeSetBuffer(), dkcBufferResize(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamResize(), dkcQueueDynamicPush(), dkcSingleListSetBuffer(), と dkcStackDynamicPush().

00243 {
00244     return dkcReallocateEx(realloc,NewPtr,NewSize,OldPtr);
00245 }

DKC_EXTERN int WINAPI dkcReallocateAutoExpand DKC_REALLOC_F_TYPE  your_realloc,
void **  NewPtr,
void **  OldPtr,
size_t  OldSize,
size_t *  reallocated_size
 

引数:
your_realloc[in] reallocする関数
NewPtr[out] 新しいメモリ空間アドレス
OldPtr[in][out] 古いメモリ空間アドレス。関数が成功すると、OldPtrは無効になる
OldSize[in] OldPtrのサイズ
reallocated_size[out] 確保したサイズ
覚え書き:
メモリサイズ拡張専用

dkcOSIndependent.c272 行で定義されています。

参照先 DKC_REALLOC_F_TYPE, dkcReallocateSizeFunction(), と NULL.

00276 {
00277     void *ptr = NULL;
00278     size_t want_size = OldSize / 8;
00279     size_t ra_size = dkcReallocateSizeFunction(OldSize,
00280          (want_size <= 20) ? 20 : want_size
00281     );
00282     size_t div = 8;
00283     size_t tmp_ra = ra_size / div;
00284     size_t i;
00285     if(NULL== your_realloc /*|| NULL==*NewPtr*/ || NULL == *OldPtr ||
00286         0==OldSize  || NULL==reallocated_size   
00287     ){
00288         return edk_ArgumentException;//アホ引数入れるな!!
00289     }
00290 
00291     for(i=0;i<div;i++){
00292         ptr = your_realloc(*OldPtr,ra_size);
00293         if(NULL==ptr){
00294             if(OldSize > (ra_size -= tmp_ra)){//とりあえずtmp_ra分を引く。
00295                 break;//こら望みなしだわ
00296             }
00297             continue;
00298         }else{
00299             break;
00300         }
00301     }
00302     if(NULL==ptr) return edk_FAILED;
00303 
00304     //更新
00305     *NewPtr = ptr;  
00306     *OldPtr = NULL;
00307 
00308     *reallocated_size = ra_size;
00309 
00310     return edk_SUCCEEDED;
00311 }

DKC_EXTERN int WINAPI dkcReallocateEx DKC_REALLOC_F_TYPE  your_realloc,
void **  NewPtr,
size_t  NewSize,
void **  OldPtr
 

edk_SUCCEEDEDだったら成功

引数:
your_realloc[in] reallocする関数
NewPtr[out] 新しいメモリ空間アドレス
NewSize[in] 新しいメモリ空間アドレスのサイズ。
OldPtr[in][out] 古いメモリ空間アドレス。関数が成功すると、OldPtrは無効になる
OldSize[in] OldPtrのサイズ

dkcOSIndependent.c247 行で定義されています。

参照先 DKC_REALLOC_F_TYPE, と NULL.

参照元 dkcReallocate().

00251 {
00252     void *ptr = NULL;
00253 
00254     if(NULL== your_realloc  /*|| NULL == *OldPtr ||
00255         0==OldSize*/
00256     ){
00257         return edk_ArgumentException;//アホ引数入れるな!!
00258     }
00259 
00260     ptr = your_realloc(*OldPtr,NewSize);
00261     if(NULL==ptr) return edk_FAILED;
00262 
00263     //更新
00264     *OldPtr = NULL;
00265     *NewPtr = ptr;
00266     
00267     return edk_SUCCEEDED;
00268 }

DKC_EXTERN size_t dkcReallocateSizeFunction size_t  OldSize,
size_t  ExpandSize
 

dkcOSIndependent.c223 行で定義されています。

参照元 dkcMemoryStreamAutoExpandResize(), dkcQueueDynamicPush(), dkcReallocateAutoExpand(), と dkcStackDynamicPush().

00223                                                                   {
00224     //y=-25.43035 * pow(x,2) + 116.7214
00225     //y = -0.00000018 * pow(x,2) + 0.00019
00226     //y = -99.9999 * pow(OldSize,2) + 104857600;
00227     //y = 0.105263 * x * x + 10.52631
00228     //double x;
00229 //  size_t size;
00230     if(OldSize <= 1024 * 5){//5KB以内なら2倍
00231         return OldSize * 2;
00232     }else if(OldSize >= 1024 * 1024 * 10 || 0==OldSize)
00233     {//10MB以上なら + ExpandSize
00234         return OldSize + ExpandSize;
00235     }
00236     //それ以外ならExpandSize * 3
00237     return OldSize + ExpandSize * 3; 
00238     //return OldSize * 2;//ひでぇ関数だ。
00239 }

DKC_EXTERN USHORT dkcReverseEndian16 USHORT  x  ) 
 

endian change 16 bit version

dkcOSIndependent.c683 行で定義されています。

参照元 dkcStreamProcess16().

00683                                               {
00684     return (USHORT)((x >> 8) | (x << 8));
00685 }

DKC_EXTERN ULONG dkcReverseEndian32 ULONG  x  ) 
 

General Function Library Copyright (C) 2000,2001 SYN All Rights Reserved.より.

参照元 dkcReverseEndian64(), dkcStreamProcess32(), GetHeader(), HeaderWrite(), ReverseEndian(), と ReverseEndianDWORD().

DKC_EXTERN ULONGLONG dkcReverseEndian64 ULONGLONG  x  ) 
 

General Function Library Copyright (C) 2000,2001 SYN All Rights Reserved.より.

dkcOSIndependent.c691 行で定義されています。

参照先 dkcReverseEndian32(), DWORD, と ULONGLONG.

参照元 dkcStreamProcess64(), GetHeader(), HeaderWrite(), と ReverseEndianQWORD().

00691                                                      {
00692 
00693     return (
00694         (ULONGLONG)dkcReverseEndian32((DWORD)(x & 0x00000000ffffffff)) << 32)
00695         | 
00696         dkcReverseEndian32((DWORD)(x >> 32)
00697     );
00698 
00699 }

DKC_EXTERN int WINAPI dkcRotateShiftRightMemory void *  dest,
size_t  size,
size_t  n
 

dkcOSIndependent.c956 行で定義されています。

参照先 dkcRotateShiftRightMemoryLogic(), と NULL.

00956                                                                     {
00957     //size_t i = 0;
00958     void *pd = NULL;
00959     int r = edk_FAILED;
00960 
00961     pd = malloc(num);
00962     if(NULL==pd){
00963         return edk_OutOfMemory;
00964     }
00965     if(DKUTIL_SUCCEEDED(dkcRotateShiftRightMemoryLogic(d,size,num,pd,num))){
00966         r = edk_SUCCEEDED;
00967     }
00968 
00969     free(pd);
00970     
00971     return r;
00972 
00973 }

DKC_INLINE int dkcRotateShiftRightMemoryLogic void *  dest,
size_t  size,
size_t  n,
void *  workbuff,
size_t  worksize
 

dkcOSIndependent.c934 行で定義されています。

参照先 BYTE.

参照元 dkcRotateShiftRightMemory().

00935 {
00936     BYTE *dest = (BYTE *)d;
00937     size_t temp;
00938 
00939     if(n > worksize){
00940         return edk_FAILED;
00941     }
00942     for(;;){
00943         if(n < size){
00944             break;
00945         }
00946         n -= size;
00947     }
00948     temp = size - n;
00949     memcpy(workbuff,dest + temp,n);
00950     memmove(dest + n,dest,temp);
00951     memcpy(dest,workbuff,n);
00952     return edk_SUCCEEDED;
00953 
00954 }

DKC_EXTERN int WINAPI dkcSaveBinary const void *  data,
size_t  size,
const char *  fname
 

fopenのファイル関数を使ってバイナリセーブを行う。 類似: dkcMemoryToFile()

dkcOSIndependent.c442 行で定義されています。

参照先 dkcSaveFile().

参照元 dkcCircularStreamDump(), dkcFileCopyEx(), と dkcFreeSerialize().

00442                                                                         {//="wb"
00443     return dkcSaveFile(data,size,fname,"wb");
00444 }

DKC_EXTERN int WINAPI dkcSaveText const char *  text,
size_t  length,
const char *  fname
 

fopenでテキストセーブを行う

dkcOSIndependent.c459 行で定義されています。

参照先 dkcSaveFile().

00459                                                                         {
00460     return dkcSaveFile(text,length,fname,"wt");
00461 }

DKC_EXTERN int WINAPI dkcSelect void *  dest,
const void *  a_src,
size_t  n,
int  k,
size_t  width,
DKC_COMPARE_TYPE  less
 

いわいるセレクト(選択)アルゴリズム

n:配列の再台数 k:調べたい番号(小さいうちから)

戻り値:
offset number ,Error : UINT_MAX

dkcOSIndependent.c741 行で定義されています。

参照先 DKC_COMPARE_TYPE, dkcSwapFast(), get_offset(), と NULL.

参照元 dkcSelectMax(), と dkcSelectMin().

00742 {
00743 
00744     int i,j,left, right;
00745 
00746     void *x = malloc(width);
00747     void *a = malloc(n * width);
00748     if(NULL==x || NULL==a){
00749         return edk_ArgumentException;
00750     }
00751     if(n > INT_MAX){
00752         return edk_FAILED;
00753     }
00754     
00755 
00756     memcpy(a,a_src,width * n);
00757 
00758 
00759     left = 0;  right = n - 1;
00760 
00761     while (left < right) 
00762     {
00763 
00764         memcpy(x,   (const void *)get_offset(a,k * width),width);
00765         i = left;
00766         j = right;
00767 
00768         for ( ; ; ) {
00769 
00770             while( less(get_offset(a,i * width),x) > 0){
00771             //while( *(int *)get_offset(a,i * width) < *(int *)x){
00772                 i++;
00773             }
00774 
00775             while( less(x,get_offset(a,j * width)) > 0){
00776             //while( *(int *)x < *(int *)get_offset(a,j * width) ){
00777                 j--;
00778             }
00779 
00780             if (i > j){
00781                 break;
00782             }
00783             
00784 
00785             dkcSwapFast(
00786                 get_offset(a,i * width),
00787                 get_offset(a,j * width),
00788                 width
00789                 );
00790             
00791             i++;
00792             j--;
00793         }
00794         if (j < k){
00795             left  = i;
00796         }
00797         if (k < i){
00798             right = j;
00799         }
00800     }
00801 
00802     //ゲットする
00803     {
00804         //printf("%d",*(int *)get_offset(a,k * width));
00805 
00806         memcpy(dest,(const void *)get_offset(a,k * width),width);
00807 
00808     }
00809     free(x);
00810     free(a);
00811 
00812     return edk_SUCCEEDED;
00813 
00814 }

DKC_EXTERN int WINAPI dkcSelectMax void *  dest,
const void *  a,
size_t  n,
size_t  width,
DKC_COMPARE_TYPE  comp
 

最大値を選択する

参照:
dkcSelect() の 引数kが無いだけ

dkcOSIndependent.c817 行で定義されています。

参照先 DKC_COMPARE_TYPE, と dkcSelect().

00817                                                                                                            {
00818     if(n-1 > INT_MAX){
00819         return edk_FAILED;
00820     }
00821     return dkcSelect(a,a_src,n,(int)n-1,width,less);
00822 }

DKC_EXTERN int WINAPI dkcSelectMin void *  dest,
const void *  a,
size_t  n,
size_t  width,
DKC_COMPARE_TYPE  comp
 

最小値を選択する

参照:
dkcSelect() の 引数kが無いだけ

dkcOSIndependent.c823 行で定義されています。

参照先 DKC_COMPARE_TYPE, と dkcSelect().

00823                                                                                                            {
00824     return dkcSelect(a,a_src,n,(int)0,width,less);
00825 }

DKC_EXTERN void WINAPI dkcSwap void *  p1,
void *  p2,
size_t  size
 

演算でSwapさせる。SWAP_NUM()マクロを参照。

dkcOSIndependent.c552 行で定義されています。

参照先 dkcSwap64(), と ULONGLONG.

参照元 dkcBubbleSort(), dkcCombSort(), と dkcShellSort().

00553 {
00554     dkcSwap64((ULONGLONG *)p1,(ULONGLONG *)p2,size);
00555 }

DKC_EXTERN void WINAPI dkcSwap64 ULONGLONG *  p1,
ULONGLONG *  p2,
size_t  size
 

引数:
p1[in] ULONGLONG *のバッファへのポインタ
p2[in] ULONGLONG *のバッファへのポインタ
size[in] p1,p2バッファのサイズ
覚え書き:
p1,p2共にULONGLONG *に強制型キャストしてください。

dkcOSIndependent.c517 行で定義されています。

参照先 BYTE, と ULONGLONG.

参照元 dkcSwap().

00517                                                               {
00518     size_t i;
00519     BYTE buf;
00520     size_t mod_ = size % sizeof(ULONGLONG);
00521     size_t cnt = size / sizeof(ULONGLONG);
00522     //char *tp1 = (char *)p1,*tp2 = (char *)p2;
00523     for(i=0;i<cnt;i++){
00524         SWAP_NUM(p1[i],p2[i]);
00525     }
00526     for(i=0;i<mod_;i++){
00527         
00528         //SWAP_NUM((char)tp1[size - mod_ + 1],(char)tp2[size - mod_ + i]);
00529         /*a = b - a ;\
00530     b -= a ;\
00531     a += b
00532         */
00533         /*( ( ((char *) p2)[size - mod_ + i]))
00534             = (char)( ( ((char *) p2)[size - mod_ + i])) - 
00535             (char)( ( ((char *) p1)[size - mod_ + i]));
00536         
00537         ( ( ((char *) p2)[size - mod_ + i])) -= ( ( ((char *) p1)[size - mod_ + i]));
00538 
00539         ( ( ((char *) p1)[size - mod_ + i])) += ( ( ((char *) p2)[size - mod_ + i]));
00540             */
00541         
00542         
00543         buf = (((BYTE *)p1)[size - mod_ + i]);
00544         (((BYTE *)p1)[size - mod_ + i]) = 
00545             (((BYTE *)p2)[size - mod_ + i]) ;
00546         (((BYTE *)p2)[size - mod_ + i]) = buf;
00547         
00548     }
00549 
00550 }

DKC_EXTERN void WINAPI dkcSwapFast void *  p1,
void *  p2,
size_t  size
 

どんな方法でもいいからともかく速くSwapさせる。

覚え書き:
size分のメモリを動的確保してスワップします。

dkcOSIndependent.c467 行で定義されています。

参照先 dkcmNOT_ASSERT, と NULL.

参照元 dkcSelect().

00468 {
00469     void *p = malloc(size);
00470     dkcmNOT_ASSERT(NULL==p);
00471     memcpy(p,p1,size);
00472     memcpy(p1,p2,size);
00473     memcpy(p2,p,size);
00474     free(p);
00475 }

DKC_EXTERN void WINAPI dkcTwoDWORDToULONGLONG ULONGLONG *  dest,
DWORD  high,
DWORD  low
 

dkcOSIndependent.c559 行で定義されています。

参照先 ULONGLONG.

00559                                                                                    {
00560     //*dest = (ULONGLONG)((high << 32) + low);
00561     *dest = (ULONGLONG)high << 32;
00562     *dest += low;
00563         //( high * MAXDWORD ) + low;
00564 }

DKC_EXTERN void WINAPI dkcTwoLONGToLONGLONG LONGLONG *  dest,
LONG  high,
LONG  low
 

dkcOSIndependent.c581 行で定義されています。

参照先 LONGLONG.

00581                                                                               {
00582     //*dest = (ULONGLONG)((high << 32) + low);
00583     *dest = (LONGLONG)high << 32;
00584     *dest += low;
00585 
00586 }

DKC_EXTERN void WINAPI dkcULONGLONGToTwoDWORD DWORD *  dhigh,
DWORD *  dlow,
ULONGLONG  src
 

dkcOSIndependent.c566 行で定義されています。

参照先 dkcmNOT_ASSERT, DWORD, と ULONGLONG.

00566                                                                                      {
00567     DWORD *o = (DWORD *)&src;
00568     dkcmNOT_ASSERT(sizeof(DWORD) * 2 != sizeof(ULONGLONG));
00569     //エンディアン問題をどうにかしよう!
00570     *dhigh = o[0];
00571     *dlow = o[1];
00572 }


dkutil_cに対してTue Feb 22 02:02:40 2005に生成されました。 doxygen 1.3.6