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

# dkcOSIndependent.h

独立系 [詳細]

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

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

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

ソースコードを見る。

## 構成
struct | dkc_4char
## マクロ定義
#define | DKUTIL_CSTD_NOT_DEFINE_STDLIB_MACRO
#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 | dkcdLITTLE_ENDIAN 0
#define | dkcdBIG_ENDIAN 1
#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 + 2)
| 安全なMAX_PATHのバッファのサイズ(バイト単位）
#define | dkcdMAXPATH_FIXED_SIZE 2050
| dkcdMAXPATH_BUFFERのサイズは各OSによってサイズが違うのでOSや環境によって左右されない固定サイズを定義しておくのが良いと思った
#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 | dkcmGETBYTE16(x, y) (uint16)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())
#define | dkcCheckOverflow32(a, b) dkcCheckOverflowULONG(a,b)
## 型定義
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 BOOL(* | DKC_STD_CALLBACK )(void *peculiar, void *user)
| いろんな場面で使われるコールバック関数
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)
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)
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 BOOL 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 (const void *, size_t size, FILE *fp)
DKC_EXTERN size_t WINAPI | dkcFSize (FILE *fp)
| dkcFileSize()を普段はお使いください。エラー時の時は動作は未定義です。
DKC_EXTERN int WINAPI | dkcSaveBinary (const void *data, size_t size, const char *fname)
| fopenのファイル関数を使ってバイナリセーブを行う。
DKC_EXTERN int WINAPI | dkcLoadBinary (void *data, size_t size, const char *fname, size_t *readsize)
| バイナリデータをメモリに読み込む。dkcSaveBinary()と対
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 int WINAPI | dkcInitFileFast (const char *filename)
| エラーログ(ファイル)を高速に初期化する、
DKC_EXTERN int WINAPI | dkcAddLogFile (const char *filename, const char *str,...)
| ログを吐く
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 | dkcOutputDebugString (const char *str,...)
DKC_EXTERN int WINAPI | dkcErrorMessage (const char *expression, const char *filename, size_t line, const char *message,...)
DKC_EXTERN const char *WINAPI | dkcGetPathSep ()
DKC_EXTERN int | dkcDynamicCheckEnvironment (BOOL isForceExit)
DKC_EXTERN void WINAPI | dkcCheckMemoryLeak (BOOL flag)
DKC_EXTERN BOOL WINAPI | dkcIsMMX ()
DKC_EXTERN ULONG | dkcReverseEndian32 (ULONG x)
DKC_EXTERN ULONGLONG | dkcReverseEndian64 (ULONGLONG x)
DKC_EXTERN USHORT | dkcReverseEndian16 (USHORT x)
| endian change 16 bit version
DKC_EXTERN BOOL | dkcIsLittleEndian ()
DKC_EXTERN BOOL | dkcCheckOverflowULONG (ULONG a1, ULONG a2)
| unsigned long型の二つの整数をプラスしたらオーバーフローするかどうかをチェックする。
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.h の 96 行で定義されています。 参照元 alloc_table2d(), bs_insertion_sort_to_table(), bsd_basic_logic(), bse_basic_logic(), bse_sorted_table_to_data(), dkcAllocBuffer(), dkcAllocMemoryStream(), dkcAllocQueue(), dkcAllocStack(), dkcAllocTaskEngine(), dkcBlowfishDecrypt(), dkcBlowfishEncrypt(), dkcBubbleSort(), dkcBufferResize(), dkcCombSort(), dkcCRCLoadBlock(), dkcDecryptByte(), dkcEasyVernamEncrypt(), dkcEncryptByte(), dkcFileBinaryCompare(), dkcFileWithSignatureCheckCheat(), dkcFReadAll(), dkcFWriteAll(), dkcHMACFinal(), dkcHMACInit(), dkcMD5Digest(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamResize(), dkcMemoryStreamWrite(), dkcNewSingleList(), dkcOpenFileWithSignature(), dkcQueueDynamicPush(), dkcQueuePush(), dkcQueueTop(), dkcRLEPackBitsDecode(), dkcRLEPackBitsEncode(), dkcRotateShiftRightMemoryLogic(), dkcSHA1Digest(), dkcSHA1Final(), dkcSHA1Load(), dkcSHA256Digest(), dkcSHA256Final(), dkcSHA256Load(), dkcSHA384Digest(), dkcSHA384DigestStr(), dkcSHA512Digest(), dkcSHA512Final(), dkcSHA512Load(), dkcShellSort(), dkcSingleListSetBuffer(), dkcStackDynamicPush(), dkcStackPush(), dkcStackTop(), dkcStreamReadObayAnOrder(), dkcStreamWriteObayAnOrder(), dkcSwap64(), dkcTaskEngineInit(), encode_hash(), encode_tst(), get_offset(), get_sigbit(), GetHeader(), HeaderWrite(), index(), ProcessCall(), ReadCallback(), SetStreamInfo(), と WriteCallback().

#define dkcCheckOverflow32 | ( | a,
|  | b |  | ) | dkcCheckOverflowULONG(a,b)

| dkcOSIndependent.h の 671 行で定義されています。 参照元 dkcMemoryStreamSeekLogic().

#define dkcdBIG_ENDIAN 1

| dkcOSIndependent.h の 240 行で定義されています。

#define dkcdLITTLE_ENDIAN 0

| dkcOSIndependent.h の 239 行で定義されています。 参照元 dkcNLZ_IEEE().

#define dkcdMAXPATH 1024

| dkcOSIndependent.h の 356 行で定義されています。 参照元 dkcPathStringConcatenate(), dkcPathStringCopy(), と dkcSemiRealRandomInit().

#define dkcdMAXPATH_BUFFER (dkcdMAXPATH * 2 + 2)

| 安全なMAX_PATHのバッファのサイズ(バイト単位） dkcOSIndependent.h の 378 行で定義されています。 参照元 dkcAllocPathString(), dkcCreateDirectory(), dkcGetCurrentDirectory(), dkcIsEffectivePath(), dkcPathStringNormalizeConcatenateLogic(), dkcPathStringNormalizeCopyLogic(), と dkcToAbsolutelyPath().

#define dkcdMAXPATH_FIXED_SIZE 2050

| dkcdMAXPATH_BUFFERのサイズは各OSによってサイズが違うのでOSや環境によって左右されない固定サイズを定義しておくのが良いと思った dkcOSIndependent.h の 384 行で定義されています。

#define dkcdMAXPATH_LEN dkcdMAXPATH

| dkcOSIndependent.h の 362 行で定義されています。 参照元 dkcCreateDirectory(), と dkcCurrentDirectoryConcatenate().

#define dkcdPATH_LIST_SEP ':'

| dkcOSIndependent.h の 122 行で定義されています。

#define dkcdPATH_LIST_SEP_STR ":"

| dkcOSIndependent.h の 123 行で定義されています。

#define dkcdPATH_SEP '/'

| dkcOSIndependent.h の 120 行で定義されています。 参照元 dkcCreateDirectory(), dkcGetPathSep(), dkcPathStringGetDirectory(), と dkcPushBackPathSep().

#define dkcdPATH_SEP_STR "/"

| dkcOSIndependent.h の 121 行で定義されています。 参照元 dkcPathStringNormalizeConcatenateLogic().

#define dkcIsBigEndian | (
|  | ) | (!dkcIsLittleEndian())

| 戻り値: big endianならTRUE dkcOSIndependent.h の 665 行で定義されています。 参照元 dkcSNOW2GetInitializeVector().

#define dkcmASSERT | ( | ex |  | ) | ((void)0)

| dkcOSIndependent.h の 617 行で定義されています。 参照元 calc_tst_node_offset(), calc_tst_node_ptr(), dkc2TreeFindEqual(), dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkcHMACDigest(), dkcHMACDigestStr(), dkcHMACInit(), dkcHMACKeyInner(), dkcHMACLoad(), dkcSNOW2_64Byte(), find_lg_base(), output_hash_code(), と output_tst_code().

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

| dkcOSIndependent.h の 615 行で定義されています。

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

| dkcOSIndependent.h の 621 行で定義されています。

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

| dkcOSIndependent.h の 623 行で定義されています。

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

| dkcOSIndependent.h の 620 行で定義されています。 参照元 BufferResize(), check_init(), dkcArrayOneByOnePop(), dkcCRCLoadBlock(), dkcFileCopyEx(), dkcFreeThreadLock(), dkcPathStringGetFileName(), dkcPrime79(), dkcSemiRealRandomInit(), dkcThreadLock_Lock(), dkcThreadLock_Unlock(), dkcThreadLockIsLockedByThisThread(), init_lzw(), load_dll(), RegLexerGetTokenImpl(), と setData().

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

| dkcOSIndependent.h の 622 行で定義されています。

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

#define dkcmGETBYTE16 | ( | x,
|  | y |  | ) | (uint16)dkcmGETBYTE(x,y)

| dkcOSIndependent.h の 396 行で定義されています。

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

| dkcOSIndependent.h の 397 行で定義されています。

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

| dkcOSIndependent.h の 395 行で定義されています。

#define dkcmIS_INVALID_FILENAME_CHAR | ( | c |  | ) |

| 値:
    ( ((c) =='\\') || ((c)=='/') || ((c)=='*') || ((c)=='?') \
            || ((c)== '"') || ((c) == '<') || ((c) == '>') || ((c) == '|') )
dkcOSIndependent.h の 126 行で定義されています。

#define dkcmIS_INVALID_FOLDERNAME_CHAR | ( | c |  | ) | dkcmIS_INVALID_FILENAME_CHAR(c)

| dkcOSIndependent.h の 129 行で定義されています。 参照元 dkcCreateDirectory().

#define dkcmIS_INVALID_PATH_CHAR | ( | c |  | ) |

| 値:
    ( ( (c)=='\\') || ((c)=='*') || ((c)=='?') || ((c)== '"') || \
        ((c) == '<') || ((c) == '>') || ((c) == '|') )
dkcOSIndependent.h の 132 行で定義されています。 参照元 dkcIsNativePathString().

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

| dkcOSIndependent.h の 124 行で定義されています。 参照元 dkcCreateDirectory().

#define dkcmNOT_ASSERT | ( | ex |  | ) | ((void)0)

| dkcOSIndependent.h の 616 行で定義されています。 参照元 add_hash(), decode_hash(), dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkcAllocBufferCopy(), dkcAllocCircularMemoryStreamCopy(), dkcAllocMemoryStreamCopy(), dkcArrayOneByOneSize(), dkcBitMemoryStreamTellBit(), dkcCreateDirectory(), dkcCurrentDirectoryConcatenate(), dkcDirectoryConcatenate(), dkcFileBinaryCompare(), dkcFileCopyEx(), dkcFReadAll(), dkcFreeBitMemoryStream(), dkcFreeStream(), dkcFWriteAll(), dkcHC256_Byte(), dkcHC256EncryptNoDestDOE(), dkcHMACFinal(), dkcIsRelativityPath(), dkcLONGLONGToTwoLONG(), dkcLZSSEncode(), dkcMemoryStreamClear(), dkcPathStringConcatenate(), dkcPathStringCopy(), dkcPathStringDevideBegin_Logic(), dkcPathStringNormalizeCopyLogic(), dkcQueuePop(), dkcQueuePush(), dkcQueueTop(), dkcSameObjectPoolAlloc(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSetCurrentDirectory(), dkcSingleListChain(), dkcSingleListInsert(), dkcSNOW2_Byte(), dkcSNOW2EncryptNoDestDOE(), dkcStackDynamicPush(), dkcStackPop(), dkcStackPush(), dkcStackTop(), dkcStreamReadObayAnOrder(), dkcStreamWriteObayAnOrder(), dkcStringConcatenate(), dkcStringCopy(), dkcStringInsert(), dkcThreadLock_Unlock(), dkcULONGLONGToTwoDWORD(), encode_hash(), find_child_node_number(), free_2tree_node(), SetStreamInfo(), と store().

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

| dkcOSIndependent.h の 614 行で定義されています。 参照元 dkcCreateDirectory().

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

| dkcOSIndependent.h の 640 行で定義されています。

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

| dkcOSIndependent.h の 642 行で定義されています。

#define dkcmREVERSE_ENDIAN64 | ( | x |  | ) | dkcReverseEndian64(x)

| dkcOSIndependent.h の 652 行で定義されています。

#define DKUTIL_CSTD_NOT_DEFINE_STDLIB_MACRO

| dkcOSIndependent.h の 44 行で定義されています。

#define DWORD uint32

| dkcOSIndependent.h の 90 行で定義されています。 参照元 dkcAllocBlowfish(), dkcAllocThreadLock(), dkcBlowfishDecrypt(), dkcBlowfishEncrypt(), dkcBlowfishGetOutputLength(), dkcBlowfishInit(), dkcFileBinaryCompare(), dkcFileToMemory(), dkcReverseEndian64(), dkcSHA1Final(), dkcSHA1Load(), dkcSHA256Final(), dkcSHA256Load(), dkcSHA512DigestStr(), dkcSHA512Load(), dkcThreadLock_Unlock(), dkcThreadLockIsLockedByThisThread(), dkcULONGLONGToTwoDWORD(), と Generate().

#define FALSE 0

| dkcOSIndependent.h の 113 行で定義されています。 参照元 alloc_RegNFA(), bse_sorted_table_to_data(), dkc2TreeErase(), dkc2TreeExist(), dkc_stream_swap(), dkcAllocCRC_32left(), dkcAllocCRC_7left(), dkcAllocCRC_ansi16right(), dkcAllocCRC_ccitt_left(), dkcAllocPathString(), dkcAllocSameObjectPool(), dkcBitMemoryStreamRead(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamRead(), dkcCircularMemoryStreamReadLogic(), 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(), dkcMemoryStreamLoadFromFile(), dkcOpenFileWithSignature(), dkcPathStringElementInsert_Logic(), dkcPathStringElementReplace_Logic(), dkcPathStringNormalizeConcatenateLogic(), dkcPushBackPathSep(), dkcRegexSearch(), dkcRegularExpressionMatch(), dkcRegularExpressionSearch(), dkcSameObjectPoolAlloc(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSecureHashCalculateStringDigest(), dkcSemiRealRandomGet32(), dkcSetCurrentDirectory(), dkcSHA1Digest(), dkcSHA1DigestStr(), dkcSHA1Init(), dkcSHA256Digest(), dkcSHA256DigestStr(), dkcSHA256Init(), dkcSHA384Digest(), dkcSHA384DigestStr(), dkcSHA384Init(), dkcSHA512Digest(), dkcSHA512DigestStr(), dkcSHA512Init(), dkcSHOLoad(), dkcStreamEOF(), dkcStreamError(), dkcSwapFast(), Encode(), generate(), RegNFA_add_transition_a4(), RegNFA_check_and_push_stack(), RegNFA_Construct(), RegParser_Construct(), RegParser_primary(), RegParser_reclass(), RegTrans_match_c(), RegTrans_match_i(), SetStreamInfo(), と test().

#define LONGLONG long long int

| dkcOSIndependent.h の 105 行で定義されています。 参照元 dkcLONGLONGToTwoLONG(), と dkcTwoLONGToLONGLONG().

#define LONGLONG_MAX DKINGYO_LONGLONG_MAX

| dkcOSIndependent.h の 338 行で定義されています。

#define LONGLONG_MIN DKINGYO_LONGLONG_MIN

| dkcOSIndependent.h の 341 行で定義されています。

#define MAYBE 2

| dkcOSIndependent.h の 389 行で定義されています。

#define NULL 0

| dkcOSIndependent.h の 117 行で定義されています。 参照元 add_hash(), alloc_2tree_node(), alloc_hash(), alloc_RegNFA(), alloc_set(), alloc_table2d(), blockDecrypt(), blockEncrypt(), bsd_basic_logic(), bse_basic_logic(), cipherInit(), decode_hash(), decode_tst(), dkc2TreeErase(), dkc2TreeEraseFromKey(), dkc2TreeExist(), dkc2TreeFindEqual(), dkc2TreeFindMaximumLess(), dkc2TreeFindMinimalGreater(), dkc2TreeInsert(), dkc2TreeSetBuffer(), dkc_memcpy_zc(), dkcAddLogFile(), dkcAlloc2TreeRoot(), dkcAllocArcfour(), dkcAllocArcfour2Byte(), dkcAllocArrayOneByOne(), dkcAllocateFill(), dkcAllocBitMemoryStream(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocBufferCopy(), dkcAllocCircularMemoryStream(), dkcAllocCircularMemoryStreamCopy(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocHC256(), dkcAllocHC256Const(), dkcAllocHC256NoLimitKeyLength(), dkcAllocHMAC(), dkcAllocLZW(), dkcAllocMD5(), dkcAllocMemoryStream(), dkcAllocMemoryStreamAdapter(), dkcAllocMemoryStreamCopy(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocReplace(), dkcAllocRijndael(), dkcAllocRijndaelDecrypt(), dkcAllocRijndaelEncrypt(), dkcAllocSameObjectPool(), dkcAllocSameObjectPoolDynamic(), dkcAllocSemiRealRandomFromGFS(), dkcAllocSemiRealRandomWin32(), dkcAllocSHA1(), dkcAllocSHA256(), dkcAllocSHA384(), dkcAllocSHA512(), dkcAllocSHO(), dkcAllocSingleList(), dkcAllocSingleListBuffer(), dkcAllocSingleListObject(), dkcAllocSNOW2(), dkcAllocSNOW2NoLimitKeyLength(), dkcAllocStack(), dkcAllocStream(), dkcAllocStreamEncouragementFileType(), dkcAllocStreamFileType(), dkcAllocStreamMemoryAdapterType(), dkcAllocStreamMemoryType(), dkcAllocString(), dkcAllocTaskEngine(), dkcAllocThreadLock(), dkcAllocUniqueID(), dkcBlowfishEncrypt(), dkcBufferResize(), dkcCalculateInitializeVector(), dkcCircularMemoryStreamClear(), dkcCircularMemoryStreamReadLogic(), dkcCircularMemoryStreamWrite(), dkcCloseFileWithSignature(), dkcCreateDirectory(), dkcCreateEmptyFile(), dkcDeleteSingleList(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcEasyVernamEncrypt(), dkcErrorMessage(), dkcFClose(), dkcFileBinaryCompare(), dkcFileCopy(), dkcFileCopyEx(), dkcFileSize64(), dkcFileToMemory(), dkcFindClose(), dkcFindFileGetFileName(), dkcFindFirstFile(), dkcFree(), dkcFree2TreeRoot(), dkcFree2TreeWithVector(), dkcFreeArcfour(), dkcFreeArcfour2Byte(), dkcFreeArrayOneByOne(), dkcFreeBitMemoryStream(), dkcFreeBlowfish(), dkcFreeBuffer(), dkcFreeCircularMemoryStream(), dkcFreeDeque(), dkcFreeFindFile(), dkcFreeGenericFileSystem(), dkcFreeHMAC(), dkcFreeLZSS(), dkcFreeLZW(), dkcFreeMD5(), dkcFreeMemoryStream(), dkcFreePathString(), dkcFreeQueue(), dkcFreeReplace(), dkcFreeRijndael(), dkcFreeRLE(), dkcFreeSameObjectPool(), dkcFreeSemiRealRandom(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkcFreeSHO(), dkcFreeSingleList(), dkcFreeSingleListObject(), dkcFreeStack(), dkcFreeStream(), dkcFreeString(), dkcFreeThreadLock(), dkcFreeUniqueID(), dkcGenericFileSystemOpen(), dkcGetCurrentDirectory(), dkcGetProcAddress(), dkcGetSingleListBuffer(), dkcHMACFinal(), dkcInitFileFast(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcLoadFile(), dkcLoadLibrary(), dkcLZSSDecode(), dkcLZSSEncode(), dkcLZWEncode(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamClear(), dkcMemoryStreamDynamicWrite(), dkcMemoryStreamRead(), dkcMemoryStreamResize(), dkcMemoryStreamSeek(), dkcMemoryStreamWrite(), dkcMemoryToFile(), dkcNewSingleList(), dkcOpenFileWithSignature(), dkcPathStringDevideBegin_Logic(), dkcPathStringGetFileName(), dkcPathStringNormalizeCopyLogic(), dkcQueueClear(), dkcQueuePop(), dkcQueuePush(), dkcQueueTop(), dkcReallocateAutoExpand(), dkcReallocateEx(), dkcRegularExpressionSearch(), dkcRijndaelStringKey(), dkcRotateShiftRightMemory(), dkcSameObjectPoolAlloc(), dkcSameObjectPoolInit(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSameObjectPoolUninit(), dkcSaveFile(), dkcSelect(), dkcSingleListChain(), dkcSingleListErase(), dkcSingleListGetBuffer(), dkcSingleListInsert(), dkcSingleListSetBuffer(), dkcSingleListSize(), dkcSingleListTail(), dkcSLOEndLogic(), dkcSNOW2Init(), dkcStackDynamicPush(), dkcStackPop(), dkcStackPush(), dkcStackTop(), dkcStreamProcess16(), dkcStreamProcess32(), dkcStreamProcess64(), dkcStreamRead(), dkcStreamReadObayAnOrder(), dkcStreamWrite16(), dkcStreamWrite32(), dkcStreamWrite64(), dkcStringConcatenate(), dkcStringCopy(), dkcStringGetBuffer(), dkcStringInsert(), 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(), RegNFA_add_transition_a4(), RegNFA_Construct(), RegNFA_gen_state(), RegNFA_match_a3(), RegParser_factor(), RegParser_primary(), RegParser_reclass(), shc(), ToAbsolutelyLogic(), と tree_exist_reflexive().

#define TRUE 1

| dkcOSIndependent.h の 110 行で定義されています。 参照元 bse_sorted_table_to_data(), cipherInit(), Decode(), dkc2TreeExist(), dkc_stream_swap(), dkcAllocCRC_32right(), dkcAllocCRC_7right(), dkcAllocCRC_ansi16left(), dkcAllocCRC_ccitt_right(), dkcAllocCRC_xmodem(), dkcBitMemoryStreamReadLast(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamReference(), dkcCombSort(), dkcCreateEmptyFile(), dkcCreateZeroByteFile(), dkcErrorMessage(), dkcFileCopyEx(), dkcFileSize64(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcGetCurrentDirectory(), dkcHMACInit(), dkcHMACKeyInner(), dkcIs_foepn_mode(), dkcIsEffectivePath(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcIsTailPathSep(), dkcMD5Final(), dkcMemoryStreamSeekLogic(), dkcMemoryToFile(), dkcOpenFileWithSignature(), dkcRegexSearch(), dkcRijndaelErrorMessage(), dkcSameObjectPoolReserve(), dkcSameObjectPoolReserveFast(), dkcSecureHashCalculateBinaryDigest(), dkcSemiRealRandomGet32(), dkcSHA1Final(), dkcSHA256Final(), dkcSHA512Final(), dkcSHOInit(), dkcSLOPushBackLogic(), dkcStreamEOF(), dkcStreamError(), dkcSwapFast(), dkcToAbsolutelyPath(), generate(), InsertNode(), makeKey(), ReadEOFCheck(), RegNFA_check_and_push_stack(), RegNFA_Construct(), RegParser_primary(), RegParser_reclass(), RegTrans_match_c(), RegTrans_match_i(), SetStreamInfo(), と tree_exist_reflexive().

#define ULONGLONG unsigned long long int

| dkcOSIndependent.h の 101 行で定義されています。 参照元 dkcCloseFileWithSignature(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcReverseEndian64(), dkcStreamProcess64(), dkcSwap(), dkcSwap64(), dkcTwoDWORDToULONGLONG(), dkcULONGLONGToTwoDWORD(), と ReadEOFCheck().

#define ULONGLONG_MAX DKINGYO_ULONGLONG_MAX

| dkcOSIndependent.h の 335 行で定義されています。

#define WORD uint16

| dkcOSIndependent.h の 93 行で定義されています。

## 型定義

typedef int BOOL

| dkcOSIndependent.h の 139 行で定義されています。

typedef union aword DKC_4BYTE_UNION_BIG_ENDIAN_BASE

| dkcOSIndependent.h の 305 行で定義されています。

typedef union dkc4ByteUnionLittleEndianBase DKC_4BYTE_UNION_LITTLE_ENDIAN_BASE

| dkcOSIndependent.h の 307 行で定義されています。

typedef struct dkc_4char DKC_4CHAR

typedef void*( WINAPIV * DKC_ALLOC_FUNC_TYPE)(size_t)

| malloc()系 関数の型 dkcOSIndependent.h の 483 行で定義されています。

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

| dkcOSIndependent.h の 675 行で定義されています。

typedef void(WINAPIV * DKC_FREE_FUNC_TYPE)(void *)

| free()系 関数の型 dkcOSIndependent.h の 485 行で定義されています。

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

| dkcOSIndependent.h の 137 行で定義されています。

typedef BOOL(* DKC_STD_CALLBACK)(void *peculiar, void *user)

| いろんな場面で使われるコールバック関数 dkcOSIndependent.h の 328 行で定義されています。

typedef void* DKC_WINAPI_PROC_F_TYPE

| dkcOSIndependent.h の 324 行で定義されています。

typedef unsigned char dkctBOOL

| boolean型 dkcOSIndependent.h の 70 行で定義されています。

typedef unsigned long long QWORD

| dkcOSIndependent.h の 66 行で定義されています。

## 関数

DKC_EXTERN int WINAPI dkcAddLogFile | ( | const char * | filename,
|  | const char * | str,
|  |  | ...
| ) |

  | ログを吐く 引数:
  | filename[in] | ファイルネーム
  | str[in] | 吐く文字列
覚え書き: 出力速度が遅いので多用は奨励しない dkcOSIndependent.c の 512 行で定義されています。 参照先 NULL.
    00512                                                                                   {
    00513     FILE *fp=NULL;
    00514     char s[2048]="";
    00515     va_list VaList;
    00516     int r;
    00517     //SET_VA_LIST_INSERT_YEN_N(s,2048,str);
    00518     SET_VA_LIST_C(VaList,r,s,sizeof(s),str);
    00519
    00520     //ファイルをオープン
    00521     if(NULL == (fp = fopen( filename , "at" )))
    00522         return edk_FAILED;
    00523     // エラーログファイルに書き出す
    00524     fputs( s , fp ) ;
    00525     fclose( fp ) ;
    00526     return edk_SUCCEEDED;
    00527 }

DKC_EXTERN void* WINAPIV dkcAllocate | ( | size_t | size | ) |

| dkcOSIndependent.c の 189 行で定義されています。 参照先 dkcAllocateFill(). 参照元 alloc_hash(), alloc_RegNFA(), alloc_sameobjectpool(), dkcAlloc2TreeRoot(), dkcAllocArcfour(), dkcAllocArcfour2Byte(), dkcAllocArrayOneByOne(), dkcAllocBitMemoryStream(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocCircularMemoryStream(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocFindFile(), dkcAllocHC256(), dkcAllocHMAC(), dkcAllocLZSS(), dkcAllocLZW(), dkcAllocMD5(), dkcAllocMemoryStream(), dkcAllocMemoryStreamAdapter(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocRegex(), dkcAllocReplace(), dkcAllocRijndael(), dkcAllocRijndaelDecrypt(), dkcAllocRijndaelEncrypt(), dkcAllocRLE(), dkcAllocSemiRealRandomFromGFS(), dkcAllocSemiRealRandomWin32(), dkcAllocSHA1(), dkcAllocSHA256(), dkcAllocSHA384(), dkcAllocSHA512(), dkcAllocSHO(), dkcAllocSingleList(), dkcAllocSingleListObject(), dkcAllocSNOW2(), dkcAllocStack(), dkcAllocStream(), dkcAllocString(), dkcAllocTaskEngine(), dkcAllocThreadLock(), dkcAllocUniqueID(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcLoadLibrary(), dkcNewSingleList(), と dkcOpenFileWithSignature().
    00189                                          {
    00190     return dkcAllocateFill(size,0);
    00191 /*void *ptr;
    00192     ptr = dkcAllocateFast(size);
    00193     if(NULL==ptr) return NULL;
    00194     memset(ptr,0,size);
    00195     return ptr;
    00196     */
    00197 }

DKC_EXTERN void* WINAPIV dkcAllocateFast | ( | size_t | size | ) |

| dkcOSIndependent.c の 186 行で定義されています。 参照元 alloc_2tree_node(), decode_hash(), decode_tst(), dkcAllocateFill(), dkcSameObjectPoolReserveFast(), と malloc_adapter().
    00186                                              {
    00187     return malloc(size);
    00188 }

DKC_EXTERN void* WINAPIV dkcAllocateFill | ( | size_t | size,
|  | BYTE | fill
| ) |

| dkcOSIndependent.c の 180 行で定義されています。 参照先 dkcAllocateFast(), と NULL. 参照元 dkcAllocate().
    00180                                                        {
    00181     void *p = dkcAllocateFast(size);
    00182     if(NULL==p) return NULL;
    00183     memset(p,fill,size);
    00184     return p;
    00185 }

DKC_EXTERN void WINAPI dkcCheckMemoryLeak | ( | BOOL | flag | ) |

  | 引数:
  | flag[in] | TRUEでチェックを有効
dkcOSIndependent.c の 715 行で定義されています。
    00715                                          {
    00716
    00717 }

DKC_EXTERN BOOL dkcCheckOverflowULONG | ( | ULONG | a1,
|  | ULONG | a2
| ) |

| unsigned long型の二つの整数をプラスしたらオーバーフローするかどうかをチェックする。 dkcOSIndependent.c の 792 行で定義されています。 参照先 FALSE, と TRUE. 参照元 dkcRLEPackBitsDecode(), と dkcRLEPackBitsEncode().
    00792                                                         {
    00793     ULONG maxv = ULONG_MAX;
    00794   ULONG halfv = maxv / 2 ;
    00795   ULONG x = a1,y = a2;
    00796   if(x < y){
    00797     SWAP_NUM(x,y);
    00798   }
    00799   if(x > halfv + 1){
    00800     if(y >= halfv){
    00801       return TRUE;
    00802     }
    00803   }
    00804   return FALSE;
    00805 }

DKC_EXTERN BOOL WINAPI dkcCreateEmptyFile | ( | const char * | filename | ) |

| 空ファイルを作る。 dkcOSIndependent.c の 479 行で定義されています。 参照先 FALSE, NULL, と TRUE. 参照元 dkcFileCopyEx().
    00479                                                                {
    00480     FILE *fp;
    00481     fp = fopen( filename , "wb" ) ;//wb
    00482     if(fp==NULL) return FALSE;
    00483     fclose( fp ) ;
    00484     return TRUE;
    00485 }

DKC_EXTERN int dkcDynamicCheckEnvironment | ( | BOOL | isForceExit | ) |

  | 引数:
  | isForceExit[in] | TRUEを指定するとdkutil_cの奨励環境と違った場合、強制終了する。
戻り値: edk_Result dkcOSIndependent.c の 49 行で定義されています。
    00049                                                 {
    00050
    00051 }

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

| 戻り値: almost TRUE(1) dkcOSIndependent.c の 87 行で定義されています。 参照先 MB, NULL, ODS, と TRUE.
    00089 {
    00090     char s[1024];
    00091     char ss[1024 * 2];
    00092
    00093     int va_list_result;
    00094     va_list Valist;
    00095
    00096     NULL_CHAR_ARRAY(s);
    00097     NULL_CHAR_ARRAY(ss);
    00098
    00099     if(message){
    00100         SET_VA_LIST_C(Valist,va_list_result,s,sizeof(s),message);
    00101     }else{
    00102         //SET_VA_LIST(s,sizeof(s),"No message");
    00103         _snprintf(s,sizeof(s),"No message\n");
    00104     }
    00105
    00106     _snprintf(ss,sizeof(ss),
    00107         "DKUTIL_ASSERT(%s):\nfile:%s / \n line:%d / \n message: %s",
    00108         expression,filename,line,s);
    00109
    00110
    00111
    00112 #ifdef NDEBUG//release
    00113 #   ifdef WIN32
    00114         ODS(ss);
    00115     //::MessageBox(NULL,ss,"ERROR ASSERTION !!",MB_OK);
    00116     {
    00117         LPCTSTR name="ERROR_TEMP.txt";
    00118         {
    00119             //ファイルをオープン
    00120             FILE *fp;
    00121             if(NULL != (fp = fopen( name , "at" ))){
    00122
    00123                 // エラーログファイルに書き出す
    00124                 fputs( ss , fp ) ;
    00125                 fclose( fp ) ;
    00126                 Sleep(800);
    00127             }
    00128         }
    00129         ShellExecute(NULL, "open",name, NULL, NULL, SW_SHOWNORMAL);
    00130         //Sleep(1000);
    00131         //DeleteFile(name);
    00132     }
    00133     MB("このテキストをこのソフトの開発者に渡せば、バグ発見の近道なります。\n \
    00134         開発者に知らせるときはこのテキストを転記してあげましょう。");
    00135     if(IDYES==MessageBox(NULL,
    00136         "このままこのソフトを起動しつづけると、更なるエラーが発生する可能性があります。\n終了しますか？",
    00137         "あってはいけない エラー!!!",
    00138         MB_YESNO))
    00139     {
    00140         exit(edk_FAILED);
    00141         //terminate();
    00142     }else{
    00143     }
    00144 #   else    //else of win32
    00145
    00146     fprintf(stderr,ss);
    00147     exit(edk_FAILED);
    00148
    00149 #   endif //end of win32
    00150
    00151 #else //debug
    00152
    00153 #   ifdef WIN32
    00154         ODS(ss);
    00155     fprintf(stderr,ss);
    00156     //_CrtDebugBreak();
    00157     DebugBreak();
    00158 #   else //else of win32
    00159
    00160     fprintf(stderr,ss);
    00161     Debugger();
    00162
    00163 #   endif //end of win32
    00164 #endif//end of NDEBUG
    00165     //assert(ss);
    00166
    00167     return TRUE;
    00168 }

DKC_EXTERN int WINAPI dkcFClose | ( | FILE ** | ptr | ) |

| fcloseのラッパー dkcOSIndependent.c の 367 行で定義されています。 参照先 NULL. 参照元 dkcFileCopyEx(), dkcFreeStream(), と GetHeader().
    00367                                            {
    00368     if(NULL==ptr || NULL==*ptr) return edk_ArgumentException;
    00369     fclose(*ptr);
    00370     *ptr = NULL;
    00371     return edk_SUCCEEDED;
    00372 }

DKC_EXTERN FILE* WINAPI dkcFOpen | ( | const char * | filename,
|  | const char * | mode
| ) |

| fopenのラッパー dkcOSIndependent.c の 363 行で定義されています。 参照元 dkcAllocStream(), dkcFileCopyEx(), と GetHeader().
    00363                                                                         {
    00364     return fopen(filename,mode);
    00365 }

DKC_EXTERN size_t WINAPI dkcFReadAll | ( | void * | ,
|  | size_t | size,
|  | FILE * | fp
| ) |

| freadの全部責任持って読み込みますバージョン。(読み込めない場合はEOFかerror) dkcOSIndependent.c の 373 行で定義されています。 参照先 BYTE, と dkcmNOT_ASSERT. 参照元 dkcLoadFile(), と GetHeader().
    00374 {
    00375     size_t count;
    00376     size_t tc,tsize;
    00377     BYTE *tbuffer;
    00378
    00379     //read size
    00380     tsize = size;
    00381     //temp variable
    00382     tc = 0;
    00383     //offset counter
    00384     count = 0;
    00385     //byte type pointer
    00386     tbuffer = (BYTE *)buffer;
    00387     for(;;)
    00388     {
    00389         //error check
    00390         if(ferror(fp) ){
    00391             break;
    00392         }
    00393         if(feof(fp)){
    00394             break;
    00395         }
    00396         //read
    00397         tc = fread(&tbuffer[count],1,tsize,fp);
    00398         //update
    00399         tsize -= tc;
    00400         count += tc;
    00401
    00402         if(count == size){
    00403             break;
    00404         }
    00405 #   ifdef DEBUG
    00406         //ありえないエラーチェック
    00407         dkcmNOT_ASSERT(count > size);
    00408 #   else
    00409         if(count > size){
    00410             break;
    00411         }
    00412 #   endif
    00413     }
    00414     return count;
    00415 }

DKC_EXTERN int WINAPIV dkcFree | ( | void ** | p | ) |

| dkcOSIndependent.c の 199 行で定義されています。 参照先 NULL. 参照元 alloc_RegNFA(), decode_hash(), decode_tst(), dkcAlloc2TreeRoot(), dkcAllocArrayOneByOne(), dkcAllocBitMemoryStream(), dkcAllocBuffer(), dkcAllocCircularMemoryStream(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocLZW(), dkcAllocMemoryStream(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocReplace(), dkcAllocRijndael(), dkcAllocSingleList(), dkcAllocSingleListObject(), dkcAllocStack(), dkcAllocStream(), dkcAllocString(), dkcAllocTaskEngine(), dkcAllocUniqueID(), dkcCloseFileWithSignature(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcFreeArcfour(), dkcFreeArcfour2Byte(), dkcFreeArrayOneByOne(), dkcFreeBitMemoryStream(), dkcFreeBlowfish(), dkcFreeBuffer(), dkcFreeCircularMemoryStream(), dkcFreeCRC(), dkcFreeDeque(), dkcFreeFindFile(), dkcFreeGenericFileSystem(), dkcFreeHC256(), dkcFreeHMAC(), dkcFreeLZSS(), dkcFreeLZW(), dkcFreeMD5(), dkcFreeMemoryStream(), dkcFreeMemoryStreamAdapter(), dkcFreePathString(), dkcFreeQueue(), dkcFreeRegex(), dkcFreeReplace(), dkcFreeRijndael(), dkcFreeRLE(), dkcFreeSemiRealRandom(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkcFreeSHO(), dkcFreeSingleListObject(), dkcFreeSNOW2(), dkcFreeStack(), dkcFreeStream(), dkcFreeString(), dkcFreeTaskEngine(), dkcFreeThreadLock(), dkcFreeUniqueID(), dkcLoadLibrary(), dkcOpenFileWithSignature(), dkcSingleListErase(), dkcUnloadLibrary(), free_2tree_node(), free_2tree_root(), free_adapter(), free_hash(), free_RegNFA(), と free_sameobjectpool().
    00199                                  {
    00200     if(!*p) return edk_FAILED;
    00201     free(*p);
    00202     *p = NULL;
    00203     return edk_SUCCEEDED;
    00204 }

DKC_EXTERN void WINAPIV dkcFreeAdapter | ( | void * |  | ) |

| dkcOSIndependent.c の 174 行で定義されています。 参照元 dkcSameObjectPoolInit().
    00174                                     {
    00175     if(p){
    00176         free(p);
    00177     }
    00178 }

DKC_EXTERN size_t WINAPI dkcFSize | ( | FILE * | fp | ) |

| dkcFileSize()を普段はお使いください。エラー時の時は動作は未定義です。 dkcOSIndependent.c の 462 行で定義されています。
    00463 {
    00464     long t;
    00465     size_t len;
    00466     //temporary
    00467     t = ftell(fp);
    00468     fseek(fp,0,SEEK_END);
    00469     len = ftell(fp);
    00470     fseek(fp,t,SEEK_SET);
    00471     return len;
    00472 }

DKC_EXTERN size_t WINAPI dkcFWriteAll | ( | const void * | ,
|  | size_t | size,
|  | FILE * | fp
| ) |

| 参照: dkcFReadAll() dkcFReadAllのfwrite版 dkcOSIndependent.c の 417 行で定義されています。 参照先 BYTE, と dkcmNOT_ASSERT. 参照元 dkcSaveFile().
    00417                                                                               {
    00418     size_t count;
    00419     size_t tc,tsize;
    00420     BYTE *tbuffer;
    00421
    00422     //read size
    00423     tsize = size;
    00424     //temp variable
    00425     tc = 0;
    00426     //offset counter
    00427     count = 0;
    00428     //byte type pointer
    00429     tbuffer = (BYTE *)buffer;
    00430     for(;;)
    00431     {
    00432         //error check
    00433         if(ferror(fp) ){
    00434             break;
    00435         }
    00436         if(feof(fp)){
    00437             break;
    00438         }
    00439         //read
    00440         tc = fwrite(&tbuffer[count],1,tsize,fp);
    00441         //update
    00442         tsize -= tc;
    00443         count += tc;
    00444
    00445         if(count == size){
    00446             break;
    00447         }
    00448 #   ifdef DEBUG
    00449         //ありえないエラーチェック
    00450         dkcmNOT_ASSERT(count > size);
    00451 #   else
    00452         if(count > size){
    00453             break;
    00454         }
    00455 #   endif
    00456     }
    00457     return count;
    00458
    00459 }

DKC_EXTERN const char* WINAPI dkcGetPathSep | ( |  | ) |

| 戻り値: path separatorの入った文字列(1byte毎にpath separatorの文字定数が入っている)をゲット dkcOSIndependent.c の 720 行で定義されています。 参照先 dkcdPATH_SEP. 参照元 dkcSJIS_SearchPathSep(), と dkcSJIS_SearchPathSepLast().
    00720                                   {
    00721 #ifdef WIN32
    00722     static char target[3]={dkcdPATH_SEP,'/','\0'};
    00723 #else
    00724     static char target[3]={dkcdPATH_SEP,'\0'};
    00725 #endif
    00726     return target;
    00727 }

DKC_EXTERN int WINAPI dkcInitFileFast | ( | const char * | filename | ) |

  | エラーログ(ファイル)を高速に初期化する、 覚え書き: 完全に抹消するわけではない 引数:
  | filename[in] | ファイルの名前
dkcOSIndependent.c の 500 行で定義されています。 参照先 NULL.
    00501 {
    00502     FILE *fp;
    00503     // エラーログファイルを開く(初期化)
    00504     if(NULL==(fp = fopen( filename , "wt" ))){
    00505         return edk_FAILED;
    00506     }
    00507     fclose( fp ) ;
    00508
    00509     return edk_SUCCEEDED;
    00510 }

DKC_EXTERN BOOL dkcIs_foepn_mode | ( | const char * | s | ) |

| fopenの時の第二引数が有効な値かどうか調べる。 dkcOSIndependent.c の 205 行で定義されています。 参照先 FALSE, と TRUE.
    00205                                     {
    00206     /* wrtb+ */
    00207     const char *ms= "wrtb+";
    00208     size_t slen = strlen(s);
    00209     size_t mslen = strlen(ms);
    00210     size_t i,j;
    00211     int flag = FALSE;
    00212     for(i=0;i<slen;i++){
    00213         for(j=0;j<mslen;j++){
    00214             if(ms[j]==s[i]){
    00215                 flag = TRUE;
    00216                 break;
    00217             }
    00218         }
    00219         if(TRUE!=flag){
    00220             return FALSE;
    00221         }else{
    00222             flag = FALSE;
    00223         }
    00224     }
    00225     return TRUE;
    00226 }

DKC_EXTERN BOOL dkcIsLittleEndian | ( |  | ) |

| 戻り値: little endian ならTRUE dkcOSIndependent.c の 786 行で定義されています。 参照元 dkcOpenFileWithSignature(), GetHeader(), HeaderWrite(), と SetStreamInfo().
    00786                                     {
    00787     int x=1;
    00788     return (BOOL)((*(char*)&x));
    00789 }

DKC_EXTERN BOOL WINAPI dkcIsMMX | ( |  | ) |

| 戻り値: MMXが使えるならTRUE dkcOSIndependent.c の 763 行で定義されています。 参照先 FALSE. 参照元 CheckMMX().
    00763                           {
    00764   return FALSE;
    00765 }

DKC_EXTERN BOOL WINAPI dkcIsNativePathString | ( | const char * | s,
|  | size_t | size
| ) |

| 戻り値: FALSEならNativeなファイルパスではない。 dkcOSIndependent.c の 56 行で定義されています。 参照先 dkcmIS_INVALID_PATH_CHAR, FALSE, NULL, と TRUE. 参照元 dkcAllocPathString(), dkcIsEffectivePath(), dkcPathStringElementInsert_Logic(), と dkcPathStringElementReplace_Logic().
    00056                                                            {
    00057
    00058     size_t i=0;
    00059     if(s==NULL) return edk_FAILED;
    00060     for(;i<size;i++){
    00061         if(dkcmIS_INVALID_PATH_CHAR(s[i]))
    00062         {
    00063             return FALSE;
    00064         }
    00065     }
    00066     return TRUE;
    00067 }

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

| バイナリデータをメモリに読み込む。dkcSaveBinary()と対 覚え書き: 類似: dkcFileToMemory() dkcOSIndependent.c の 488 行で定義されています。 参照先 dkcLoadFile(). 参照元 dkcFileCopyEx(), と dkcMemoryStreamLoadFromFile().
    00488                                                                                               {//="rb"
    00489     return dkcLoadFile(data,size,fname,"rb",readsize);
    00490 }

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

| テキストデータをメモリに読み込む。dkcSaveText()と対 dkcOSIndependent.c の 495 行で定義されています。 参照先 dkcLoadFile().
    00495                                                                                               {
    00496     return dkcLoadFile(text,length,fname,"rt",readsize);
    00497 }

DKC_EXTERN void WINAPI dkcLONGLONGToTwoLONG | ( | LONG * | high,
|  | LONG * | low,
|  | LONGLONG | src
| ) |

| dkcOSIndependent.c の 658 行で定義されています。 参照先 dkcmNOT_ASSERT, と LONGLONG.
    00658                                                                               {
    00659     LONG *o = (LONG *)&src;
    00660     dkcmNOT_ASSERT(sizeof(LONG) * 2 != sizeof(LONGLONG));
    00661     *high = o[0];
    00662     *low = o[1];
    00663 }

DKC_EXTERN void* WINAPIV dkcMallocAdapter | ( | size_t |  | ) |

| dkcOSIndependent.c の 170 行で定義されています。 参照元 dkcSameObjectPoolAlloc(), と dkcSameObjectPoolInit().
    00170                                         {
    00171     return malloc(s);
    00172 }

DKC_EXTERN int WINAPI dkcOutputDebugString | ( | const char * | str,
|  |  | ...
| ) |

| dkcOSIndependent.c の 69 行で定義されています。
    00069                                                                {
    00070     char s[1024 * 2];
    00071
    00072
    00073     int va_list_result;
    00074     va_list Valist;
    00075
    00076
    00077
    00078     SET_VA_LIST_C(Valist,va_list_result,s,sizeof(s),str);
    00079     if(0 > va_list_result){
    00080         return edk_FAILED;
    00081     }
    00082     OutputDebugString(s);
    00083     return edk_SUCCEEDED;
    00084     //fprintf(stderr,s);
    00085 }

DKC_EXTERN int WINAPI dkcReallocate | ( | void ** | NewPtr,
|  | size_t | NewSize,
|  | void ** | OldPtr
| ) |

| dkcOSIndependent.c の 260 行で定義されています。 参照先 dkcReallocateEx(). 参照元 dkc2TreeSetBuffer(), dkcBufferResize(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamResize(), dkcQueueDynamicPush(), dkcSingleListSetBuffer(), と dkcStackDynamicPush().
    00262 {
    00263     return dkcReallocateEx(realloc,NewPtr,NewSize,OldPtr);
    00264 }

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.c の 291 行で定義されています。 参照先 dkcReallocateSizeFunction(), と NULL.
    00295 {
    00296     void *ptr = NULL;
    00297     size_t want_size = OldSize / 8;
    00298     size_t ra_size = dkcReallocateSizeFunction(OldSize,
    00299          (want_size <= 20) ? 20 : want_size
    00300     );
    00301     size_t div = 8;
    00302     size_t tmp_ra = ra_size / div;
    00303     size_t i;
    00304     if(NULL== your_realloc /*|| NULL==*NewPtr*/ || NULL == *OldPtr ||
    00305         0==OldSize  || NULL==reallocated_size
    00306     ){
    00307         return edk_ArgumentException;//アホ引数入れるな！！
    00308     }
    00309
    00310     for(i=0;i<div;i++){
    00311         ptr = your_realloc(*OldPtr,ra_size);
    00312         if(NULL==ptr){
    00313             if(OldSize > (ra_size -= tmp_ra)){//とりあえずtmp_ra分を引く。
    00314                 break;//こら望みなしだわ
    00315             }
    00316             continue;
    00317         }else{
    00318             break;
    00319         }
    00320     }
    00321     if(NULL==ptr) return edk_FAILED;
    00322
    00323     //更新
    00324     *NewPtr = ptr;
    00325     *OldPtr = NULL;
    00326
    00327     *reallocated_size = ra_size;
    00328
    00329     return edk_SUCCEEDED;
    00330 }

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

  | 引数:
  | your_realloc[in] | reallocする関数
  | NewPtr[out] | 新しいメモリ空間アドレス
  | NewSize[in] | 新しいメモリ空間アドレスのサイズ。
  | OldPtr[in][out] | 古いメモリ空間アドレス。関数が成功すると、OldPtrは無効になる
  | OldSize[in] | OldPtrのサイズ
戻り値: edk_SUCCEEDEDだったら成功 dkcOSIndependent.c の 266 行で定義されています。 参照先 NULL. 参照元 dkcReallocate().
    00270 {
    00271     void *ptr = NULL;
    00272
    00273     if(NULL== your_realloc  /*|| NULL == *OldPtr ||
    00274         0==OldSize*/
    00275     ){
    00276         return edk_ArgumentException;//アホ引数入れるな！！
    00277     }
    00278
    00279     ptr = your_realloc(*OldPtr,NewSize);
    00280     if(NULL==ptr) return edk_FAILED;
    00281
    00282     //更新
    00283     *OldPtr = NULL;
    00284     *NewPtr = ptr;
    00285
    00286     return edk_SUCCEEDED;
    00287 }

DKC_EXTERN size_t dkcReallocateSizeFunction | ( | size_t | OldSize,
|  | size_t | ExpandSize
| ) |

| dkcOSIndependent.c の 242 行で定義されています。 参照元 dkcMemoryStreamAutoExpandResize(), dkcQueueDynamicPush(), dkcReallocateAutoExpand(), と dkcStackDynamicPush().
    00242                                                                   {
    00243     //y=-25.43035 * pow(x,2) + 116.7214
    00244     //y = -0.00000018 * pow(x,2) + 0.00019
    00245     //y = -99.9999 * pow(OldSize,2) + 104857600;
    00246     //y = 0.105263 * x * x + 10.52631
    00247     //double x;
    00248 //  size_t size;
    00249     if(OldSize <= 1024 * 5){//5KB以内なら2倍
    00250         return OldSize * 2;
    00251     }else if(OldSize >= 1024 * 1024 * 10 || 0==OldSize)
    00252     {//10MB以上なら + ExpandSize
    00253         return OldSize + ExpandSize;
    00254     }
    00255     //それ以外ならExpandSize * 3
    00256     return OldSize + ExpandSize * 3;
    00257     //return OldSize * 2;//ひでぇ関数だ。
    00258 }

DKC_EXTERN USHORT dkcReverseEndian16 | ( | USHORT | x | ) |

| endian change 16 bit version dkcOSIndependent.c の 769 行で定義されています。 参照元 dkcStreamProcess16().
    00769                                               {
    00770     return (USHORT)((x >> 8) | (x << 8));
    00771 }

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.より dkcOSIndependent.c の 777 行で定義されています。 参照先 dkcReverseEndian32(), DWORD, と ULONGLONG. 参照元 dkcStreamProcess64(), GetHeader(), HeaderWrite(), と ReverseEndianQWORD().
    00777                                                      {
    00778
    00779     return (
    00780         (ULONGLONG)dkcReverseEndian32((DWORD)(x & 0x00000000ffffffff)) << 32)
    00781         |
    00782         dkcReverseEndian32((DWORD)(x >> 32)
    00783     );
    00784
    00785 }

DKC_EXTERN int WINAPI dkcRotateShiftRightMemory | ( | void * | dest,
|  | size_t | size,
|  | size_t | n
| ) |

| dkcOSIndependent.c の 1036 行で定義されています。 参照先 dkcRotateShiftRightMemoryLogic(), と NULL.
    01036                                                                     {
    01037     //size_t i = 0;
    01038     void *pd = NULL;
    01039     int r = edk_FAILED;
    01040
    01041     pd = malloc(num);
    01042     if(NULL==pd){
    01043         return edk_OutOfMemory;
    01044     }
    01045     if(DKUTIL_SUCCEEDED(dkcRotateShiftRightMemoryLogic(d,size,num,pd,num))){
    01046         r = edk_SUCCEEDED;
    01047     }
    01048
    01049     free(pd);
    01050
    01051     return r;
    01052
    01053 }

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

| dkcOSIndependent.c の 1014 行で定義されています。 参照先 BYTE. 参照元 dkcRotateShiftRightMemory().
    01015 {
    01016     BYTE *dest = (BYTE *)d;
    01017     size_t temp;
    01018
    01019     if(n > worksize){
    01020         return edk_FAILED;
    01021     }
    01022     for(;;){
    01023         if(n < size){
    01024             break;
    01025         }
    01026         n -= size;
    01027     }
    01028     temp = size - n;
    01029     memcpy(workbuff,dest + temp,n);
    01030     memmove(dest + n,dest,temp);
    01031     memcpy(dest,workbuff,n);
    01032     return edk_SUCCEEDED;
    01033
    01034 }

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

| fopenのファイル関数を使ってバイナリセーブを行う。 覚え書き: 類似: dkcMemoryToFile() dkcOSIndependent.c の 475 行で定義されています。 参照先 dkcSaveFile(). 参照元 dkcFileCopyEx(), と dkcMemoryStreamDump().
    00475                                                                         {//="wb"
    00476     return dkcSaveFile(data,size,fname,"wb");
    00477 }

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

| fopenでテキストセーブを行う dkcOSIndependent.c の 492 行で定義されています。 参照先 dkcSaveFile().
    00492                                                                                    {
    00493     return dkcSaveFile(text,length,fname,"wt");
    00494 }

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.c の 821 行で定義されています。 参照先 dkcSwapFast(), get_offset, と NULL. 参照元 dkcSelectMax(), と dkcSelectMin().
    00822 {
    00823
    00824     int i,j,left, right;
    00825
    00826     void *x = malloc(width);
    00827     void *a = malloc(n * width);
    00828     if(NULL==x || NULL==a){
    00829         return edk_ArgumentException;
    00830     }
    00831     if(n > INT_MAX){
    00832         return edk_FAILED;
    00833     }
    00834
    00835
    00836     memcpy(a,a_src,width * n);
    00837
    00838
    00839     left = 0;  right = n - 1;
    00840
    00841     while (left < right)
    00842     {
    00843
    00844         memcpy(x,   (const void *)get_offset(a,k * width),width);
    00845         i = left;
    00846         j = right;
    00847
    00848         for ( ; ; ) {
    00849
    00850             while( less(get_offset(a,i * width),x) > 0){
    00851             //while( *(int *)get_offset(a,i * width) < *(int *)x){
    00852                 i++;
    00853             }
    00854
    00855             while( less(x,get_offset(a,j * width)) > 0){
    00856             //while( *(int *)x < *(int *)get_offset(a,j * width) ){
    00857                 j--;
    00858             }
    00859
    00860             if (i > j){
    00861                 break;
    00862             }
    00863
    00864
    00865             dkcSwapFast(
    00866                 get_offset(a,i * width),
    00867                 get_offset(a,j * width),
    00868                 width
    00869                 );
    00870
    00871             i++;
    00872             j--;
    00873         }
    00874         if (j < k){
    00875             left  = i;
    00876         }
    00877         if (k < i){
    00878             right = j;
    00879         }
    00880     }
    00881
    00882     //ゲットする
    00883     {
    00884         //printf("%d",*(int *)get_offset(a,k * width));
    00885
    00886         memcpy(dest,(const void *)get_offset(a,k * width),width);
    00887
    00888     }
    00889     free(x);
    00890     free(a);
    00891
    00892     return edk_SUCCEEDED;
    00893
    00894 }

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

| 最大値を選択する 参照: dkcSelect() の 引数kが無いだけ dkcOSIndependent.c の 897 行で定義されています。 参照先 dkcSelect().
    00897                                                                                                            {
    00898     if(n-1 > INT_MAX){
    00899         return edk_FAILED;
    00900     }
    00901     return dkcSelect(a,a_src,n,(int)n-1,width,less);
    00902 }

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

| 最小値を選択する 参照: dkcSelect() の 引数kが無いだけ dkcOSIndependent.c の 903 行で定義されています。 参照先 dkcSelect().
    00903                                                                                                            {
    00904     return dkcSelect(a,a_src,n,(int)0,width,less);
    00905 }

DKC_EXTERN void WINAPI dkcSwap | ( | void * | p1,
|  | void * | p2,
|  | size_t | size
| ) |

| 演算でSwapさせる。SWAP_NUM()マクロを参照。 dkcOSIndependent.c の 636 行で定義されています。 参照先 dkcSwap64(), と ULONGLONG. 参照元 dkcBubbleSort(), dkcCombSort(), と dkcShellSort().
    00637 {
    00638     dkcSwap64((ULONGLONG *)p1,(ULONGLONG *)p2,size);
    00639 }

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.c の 601 行で定義されています。 参照先 BYTE, と ULONGLONG. 参照元 dkcSwap().
    00601                                                               {
    00602     size_t i;
    00603     BYTE buf;
    00604     size_t mod_ = size % sizeof(ULONGLONG);
    00605     size_t cnt = size / sizeof(ULONGLONG);
    00606     //char *tp1 = (char *)p1,*tp2 = (char *)p2;
    00607     for(i=0;i<cnt;i++){
    00608         SWAP_NUM(p1[i],p2[i]);
    00609     }
    00610     for(i=0;i<mod_;i++){
    00611
    00612         //SWAP_NUM((char)tp1[size - mod_ + 1],(char)tp2[size - mod_ + i]);
    00613         /*a = b - a ;\
    00614     b -= a ;\
    00615     a += b
    00616         */
    00617         /*( ( ((char *) p2)[size - mod_ + i]))
    00618             = (char)( ( ((char *) p2)[size - mod_ + i])) -
    00619             (char)( ( ((char *) p1)[size - mod_ + i]));
    00620
    00621         ( ( ((char *) p2)[size - mod_ + i])) -= ( ( ((char *) p1)[size - mod_ + i]));
    00622
    00623         ( ( ((char *) p1)[size - mod_ + i])) += ( ( ((char *) p2)[size - mod_ + i]));
    00624             */
    00625
    00626
    00627         buf = (((BYTE *)p1)[size - mod_ + i]);
    00628         (((BYTE *)p1)[size - mod_ + i]) =
    00629             (((BYTE *)p2)[size - mod_ + i]) ;
    00630         (((BYTE *)p2)[size - mod_ + i]) = buf;
    00631
    00632     }
    00633
    00634 }

DKC_EXTERN BOOL WINAPI dkcSwapFast | ( | void * | p1,
|  | void * | p2,
|  | size_t | size
| ) |

| どんな方法でもいいからともかく速くSwapさせる。 覚え書き: size分のメモリを動的確保してスワップします。 dkcOSIndependent.c の 530 行で定義されています。 参照先 FALSE, NULL, と TRUE. 参照元 dkcSelect().
    00531 {
    00532     void *p;
    00533 #if 0//stack overflow 例外が発生するのも嫌だから挙動は共通で。
    00534     int state = 0;
    00535     p = _alloca( size );
    00536     if(NULL==p){
    00537         state = 1;
    00538         p = malloc(size);
    00539         if(NULL==p)
    00540             return FALSE;
    00541     }
    00542 #else
    00543     p = malloc(size);
    00544     if(NULL==p)
    00545         return FALSE;
    00546 #endif
    00547     memcpy(p,p1,size);
    00548     memcpy(p1,p2,size);
    00549     memcpy(p2,p,size);
    00550 #if 0
    00551     if(1==state){
    00552         free(p);
    00553     }
    00554
    00555 #else
    00556     free(p);
    00557 #endif
    00558     return TRUE;
    00559 }

DKC_EXTERN void WINAPI dkcTwoDWORDToULONGLONG | ( | ULONGLONG * | dest,
|  | DWORD | high,
|  | DWORD | low
| ) |

| dkcOSIndependent.c の 643 行で定義されています。 参照先 ULONGLONG.
    00643                                                                                    {
    00644     //*dest = (ULONGLONG)((high << 32) + low);
    00645     *dest = (ULONGLONG)high << 32;
    00646     *dest += low;
    00647         //( high * MAXDWORD ) + low;
    00648 }

DKC_EXTERN void WINAPI dkcTwoLONGToLONGLONG | ( | LONGLONG * | dest,
|  | LONG | high,
|  | LONG | low
| ) |

| dkcOSIndependent.c の 665 行で定義されています。 参照先 LONGLONG.
    00665                                                                               {
    00666     //*dest = (ULONGLONG)((high << 32) + low);
    00667     *dest = (LONGLONG)high << 32;
    00668     *dest += low;
    00669
    00670 }

DKC_EXTERN void WINAPI dkcULONGLONGToTwoDWORD | ( | DWORD * | dhigh,
|  | DWORD * | dlow,
|  | ULONGLONG | src
| ) |

| dkcOSIndependent.c の 650 行で定義されています。 参照先 dkcmNOT_ASSERT, DWORD, と ULONGLONG.
    00650                                                                                      {
    00651     DWORD *o = (DWORD *)&src;
    00652     dkcmNOT_ASSERT(sizeof(DWORD) * 2 != sizeof(ULONGLONG));
    00653     //エンディアン問題をどうにかしよう！
    00654     *dhigh = o[0];
    00655     *dlow = o[1];
    00656 }