メインページ | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcOSIndependent.h

独立系 [詳細]

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

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

Include dependency graph

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

Included by dependency graph

ソースコードを見る。

構成

struct  dkc_4char

マクロ定義

#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 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 unsigned char BYTE
typedef dkc_4char DKC_4CHAR
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 dkcAllocate (size_t size)
DKC_EXTERN int WINAPIV dkcFree (void **p)
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のファイル関数を使ってバイナリセーブを行う。

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 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 void WINAPI dkcCheckMemoryLeak (BOOL flag)
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 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)


説明

独立系

覚え書き:

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


マクロ定義

#define dkcdMAXPATH   1024
 

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

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

#define dkcdMAXPATH_BUFFER   dkcdMAXPATH * 2
 

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

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

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

#define dkcdMAXPATH_LEN   dkcdMAXPATH
 

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

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

#define dkcdPATH_LIST_SEP   ':'
 

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

#define dkcdPATH_LIST_SEP_STR   ":"
 

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

#define dkcdPATH_SEP   '/'
 

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

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

#define dkcdPATH_SEP_STR   "/"
 

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

参照元 dkcPathStringNormalizeConcatenateLogic().

 
#define dkcIsBigEndian  )     (!dkcIsLittleEndian())
 

big endianならTRUE

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

#define dkcmASSERT ex   )     ((void)0)
 

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

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

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

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

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

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

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

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

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

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

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

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

#define dkcmIS_INVALID_FILENAME_CHAR  ) 
 

値:

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

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

#define dkcmIS_INVALID_FOLDERNAME_CHAR  )     dkcmIS_INVALID_FILENAME_CHAR(c)
 

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

参照元 dkcCreateDirectory().

#define dkcmIS_INVALID_PATH_CHAR  ) 
 

値:

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

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

参照元 dkcIsNativePathString().

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

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

参照元 dkcCreateDirectory().

#define dkcmNOT_ASSERT ex   )     ((void)0)
 

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

参照元 dkcAllocBufferCopy(), dkcAllocCircularMemoryStreamCopy(), dkcAllocDeserialize(), dkcAllocMemoryStreamCopy(), dkcAllocMemoryStreamDeserialize(), dkcAllocQueueDeserialize(), dkcAllocSerialize(), dkcAllocSingleListDeserialize(), dkcAllocSingleListObjectDeserialize(), dkcAllocStackDeserialize(), dkcArrayOneByOneSize(), dkcCreateDirectory(), dkcCurrentDirectoryConcatenate(), dkcDeserializeRead(), dkcDirectoryConcatenate(), dkcFReadAll(), dkcFreeStream(), dkcFWriteAll(), dkcIsRelativityPath(), dkcLONGLONGToTwoLONG(), dkcLZSSEncode(), dkcMemoryStreamClear(), dkcMemoryStreamRead(), dkcMemoryStreamSerialize(), dkcMemoryStreamWrite(), dkcPathStringConcatenate(), dkcPathStringCopy(), dkcPathStringDevideBegin_Logic(), dkcPathStringNormalizeCopyLogic(), dkcQueuePop(), dkcQueuePush(), dkcQueueSerialize(), dkcQueueTop(), dkcRLEEncode(), dkcRLEPackBitsDecode(), dkcSerializeWrite(), dkcSetCurrentDirectory(), dkcSingleListChain(), dkcSingleListInsert(), dkcSingleListSerialize(), dkcStackPop(), dkcStackPush(), dkcStackSerialize(), dkcStackTop(), dkcStreamReadObayAnOrder(), dkcStreamWriteObayAnOrder(), dkcStringConcatenate(), dkcStringCopy(), dkcStringInsert(), dkcStringSerialize(), dkcSwapFast(), dkcThreadLock_Unlock(), dkcULONGLONGToTwoDWORD(), getRLE(), と SetStreamInfo().

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

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

参照元 dkcCreateDirectory().

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

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

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

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

#define dkcmREVERSE_ENDIAN64  )     dkcReverseEndian64(x)
 

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

#define FALSE   0
 

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

参照元 bse_sorted_table_to_data(), dkc_stream_swap(), dkcAllocCRC_32left(), dkcAllocCRC_7left(), dkcAllocCRC_ansi16right(), dkcAllocCRC_ccitt_left(), dkcAllocDeserialize(), dkcAllocPathString(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamRead(), dkcCircularMemoryStreamReadLogic(), dkcCircularStreamRead(), dkcCircularStreamReadLogic(), dkcCombSort(), dkcCreateDirectory(), dkcCreateEmptyFile(), dkcCreateZeroByteFile(), dkcFileCopy(), dkcFileCopyEx(), dkcFileExist(), dkcFileSize64(), dkcFileWithSignatureCheckCheat(), dkcGetCurrentDirectory(), dkcIs_foepn_mode(), dkcIsEffectivePath(), dkcIsMMX(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcIsTailPathSep(), dkcLZSSDecode(), dkcMD5Init(), dkcOpenFileWithSignature(), dkcPathStringElementInsert_Logic(), dkcPathStringElementReplace_Logic(), dkcPathStringNormalizeConcatenateLogic(), dkcPushBackPathSep(), dkcSetCurrentDirectory(), dkcSHA1Digest(), dkcSHA1DigestStr(), dkcSHA1Init(), dkcSHA256Digest(), dkcSHA256DigestStr(), dkcSHA256Init(), dkcSHA384Digest(), dkcSHA384DigestStr(), dkcSHA384Init(), dkcSHA512Digest(), dkcSHA512DigestStr(), dkcSHA512Init(), dkcStreamEOF(), dkcStreamError(), Encode(), と SetStreamInfo().

#define LONGLONG   long long int
 

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

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

#define LONGLONG_MAX   DKINGYO_LONGLONG_MAX
 

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

#define LONGLONG_MIN   DKINGYO_LONGLONG_MIN
 

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

#define MAYBE   2
 

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

#define NULL   0
 

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

参照元 alloc_table2d(), bsd_basic_logic(), bse_basic_logic(), dkcAllocArcfour(), dkcAllocArrayOneByOne(), dkcAllocate(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocBufferCopy(), dkcAllocCircularMemoryStream(), dkcAllocCircularMemoryStreamCopy(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocDeserialize(), dkcAllocMD5(), dkcAllocMemoryStream(), dkcAllocMemoryStreamCopy(), dkcAllocMemoryStreamDeserialize(), dkcAllocNewCircularStream(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocQueueDeserialize(), dkcAllocReplace(), dkcAllocSerialize(), dkcAllocSHA1(), dkcAllocSHA256(), dkcAllocSHA384(), dkcAllocSHA512(), dkcAllocSingleList(), dkcAllocSingleListBuffer(), dkcAllocSingleListDeserialize(), dkcAllocSingleListObject(), dkcAllocSingleListObjectDeserialize(), dkcAllocStack(), dkcAllocStackDeserialize(), dkcAllocStream(), dkcAllocStreamEncouragementFileType(), dkcAllocStreamFileType(), dkcAllocStreamMemoryType(), dkcAllocString(), dkcAllocStringDeserialize(), dkcAllocTaskEngine(), dkcAllocThreadLock(), dkcAllocUniqueID(), dkcBufferResize(), dkcCircularMemoryStreamClear(), dkcCircularMemoryStreamReadLogic(), dkcCircularMemoryStreamWrite(), dkcCircularStreamDump(), dkcCircularStreamReadLogic(), dkcCircularStreamWrite(), dkcCircularStreamZero(), dkcCloseFileWithSignature(), dkcCreateDirectory(), dkcCreateEmptyFile(), dkcDeleteCircularStream(), dkcDeleteSingleList(), dkcDeserializeRead(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcEasyVernamEncrypt(), dkcErrorMessage(), dkcFClose(), dkcFileCopyEx(), dkcFileSize64(), dkcFindClose(), dkcFindFileGetFileName(), dkcFindFirstFile(), dkcFree(), dkcFreeArcfour(), dkcFreeArrayOneByOne(), dkcFreeBlowfish(), dkcFreeBuffer(), dkcFreeCircularMemoryStream(), dkcFreeDeleteCircularStream(), dkcFreeDeque(), dkcFreeDeserialize(), dkcFreeFindFile(), dkcFreeLZSS(), dkcFreeMD5(), dkcFreeMemoryStream(), dkcFreePathString(), dkcFreeQueue(), dkcFreeReplace(), dkcFreeRLE(), dkcFreeSerialize(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkcFreeSingleList(), dkcFreeSingleListObject(), dkcFreeStack(), dkcFreeStream(), dkcFreeString(), dkcFreeThreadLock(), dkcFreeUniqueID(), dkcGetCurrentDirectory(), dkcGetProcAddress(), dkcGetSingleListBuffer(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcLoadFile(), dkcLoadLibrary(), dkcLZSSDecode(), dkcLZSSEncode(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamClear(), dkcMemoryStreamDynamicWrite(), dkcMemoryStreamRead(), dkcMemoryStreamResize(), dkcMemoryStreamSeek(), dkcMemoryStreamSerialize(), dkcMemoryStreamWrite(), dkcNewCircularStream(), dkcNewCircularStreamForFile(), dkcNewSingleList(), dkcOpenFileWithSignature(), dkcPathStringDevideBegin_Logic(), dkcPathStringNormalizeCopyLogic(), dkcQueueClear(), dkcQueuePop(), dkcQueuePush(), dkcQueueSerialize(), dkcQueueTop(), dkcReallocateAutoExpand(), dkcReallocateEx(), dkcRotateShiftRightMemory(), dkcSaveFile(), dkcSelect(), dkcSerializeWrite(), dkcSingleListChain(), dkcSingleListErase(), dkcSingleListGetBuffer(), dkcSingleListInsert(), dkcSingleListSerialize(), dkcSingleListSetBuffer(), dkcSingleListSize(), dkcSingleListTail(), dkcSLOEndLogic(), 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(), dkcUnloadLibrary(), dkcVernamEncrypt(), FileWithSignatureReadLogic(), free_table2d(), GetHeader(), と ToAbsolutelyLogic().

#define TRUE   1
 

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

参照元 bse_sorted_table_to_data(), Decode(), dkc_stream_swap(), dkcAllocCRC_32right(), dkcAllocCRC_7right(), dkcAllocCRC_ansi16left(), dkcAllocCRC_ccitt_right(), dkcAllocCRC_xmodem(), dkcAllocSerialize(), dkcCheckOverflowULONG(), dkcCircularMemoryStreamReference(), dkcCircularStreamReference(), dkcCombSort(), dkcCreateEmptyFile(), dkcCreateZeroByteFile(), dkcErrorMessage(), dkcFileCopyEx(), dkcFileExist(), dkcFileSize64(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcGetCurrentDirectory(), dkcIs_foepn_mode(), dkcIsEffectivePath(), dkcIsNativePathString(), dkcIsRelativityPath(), dkcIsTailPathSep(), dkcMD5Final(), dkcOpenFileWithSignature(), dkcSHA1Final(), dkcSHA256Final(), dkcSHA512Final(), dkcSLOPushBackLogic(), dkcStreamEOF(), dkcStreamError(), dkcToAbsolutelyPath(), InsertNode(), ReadEOFCheck(), と SetStreamInfo().

#define ULONGLONG   unsigned long long int
 

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

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

#define ULONGLONG_MAX   DKINGYO_ULONGLONG_MAX
 

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


型定義

typedef int BOOL
 

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

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

typedef unsigned char BYTE
 

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

参照元 alloc_table2d(), bs_insertion_sort_to_table(), bsd_basic_logic(), bse_basic_logic(), bse_sorted_table_to_data(), bse_target_to_table(), dkcAllocArrayOneByOne(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocMemoryStream(), dkcAllocQueue(), dkcAllocStack(), dkcAllocTaskEngine(), dkcBlowfishDecrypt(), dkcBlowfishEncrypt(), dkcBlowfishInit(), dkcBubbleSort(), dkcBufferPointer(), dkcBufferResize(), dkcCombSort(), dkcCRCLoad(), dkcCRCLoadBlock(), dkcDecryptByte(), dkcEasyVernamEncrypt(), dkcEncryptByte(), dkcFileWithSignatureCheckCheat(), dkcFReadAll(), dkcFWriteAll(), dkcIsSJIS1(), dkcIsSJIS2(), dkcIsSpace(), dkcLZSSDecode(), dkcLZSSEncode(), dkcMD5Digest(), dkcMD5FinalDigest(), dkcMD5Load(), dkcMD5LoadStandard(), dkcMemoryStreamAdapterInit(), dkcMemoryStreamAdapterPointer(), dkcMemoryStreamAdapterPushBack(), dkcMemoryStreamAutoExpandResize(), dkcMemoryStreamPointer(), dkcMemoryStreamResize(), dkcMemoryStreamWrite(), dkcNewSingleList(), dkcOpenFileWithSignature(), dkcQueueDynamicPush(), dkcQueuePush(), dkcQueueTop(), dkcReplaceRun(), dkcRLEDecode(), dkcRLEEncode(), dkcRLEPackBitsDecode(), dkcRLEPackBitsEncode(), dkcRotateShiftRightMemoryLogic(), dkcSHA1Digest(), dkcSHA1Final(), dkcSHA1FinalDigest(), dkcSHA1Load(), dkcSHA256Digest(), dkcSHA256Final(), dkcSHA256FinalDigest(), dkcSHA256Load(), dkcSHA384Digest(), dkcSHA384DigestStr(), dkcSHA384FinalDigest(), dkcSHA384Load(), dkcSHA512Digest(), dkcSHA512Final(), dkcSHA512FinalDigest(), dkcSHA512Load(), dkcShellSort(), dkcSingleListSetBuffer(), dkcStackDynamicPush(), dkcStackPush(), dkcStackTop(), dkcStreamReadObayAnOrder(), dkcStreamWriteObayAnOrder(), dkcSwap64(), dkcTaskEngineInit(), dkcVernamEncrypt(), free_table2d(), get_offset(), get_sigbit(), getABS(), GetHeader(), getRLE(), HeaderWrite(), index(), ReadCallback(), setPack(), SetStreamInfo(), と WriteCallback().

typedef struct dkc_4char DKC_4CHAR
 

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

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

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

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

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

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

typedef unsigned char dkctBOOL
 

boolean型

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

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

typedef unsigned long long QWORD
 

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

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


関数

DKC_EXTERN void* WINAPIV dkcAllocate size_t  size  ) 
 

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

参照先 NULL.

参照元 dkcAllocArcfour(), dkcAllocArrayOneByOne(), dkcAllocBlowfish(), dkcAllocBuffer(), dkcAllocCircularMemoryStream(), dkcAllocCRC(), dkcAllocDeque(), dkcAllocDeserialize(), dkcAllocFindFile(), dkcAllocLZSS(), dkcAllocMD5(), dkcAllocMemoryStream(), dkcAllocNewCircularStream(), dkcAllocPathString(), dkcAllocQueue(), dkcAllocReplace(), dkcAllocRLE(), dkcAllocSerialize(), dkcAllocSHA1(), dkcAllocSHA256(), dkcAllocSHA384(), dkcAllocSHA512(), dkcAllocSingleList(), dkcAllocSingleListObject(), dkcAllocStack(), dkcAllocStream(), dkcAllocString(), dkcAllocTaskEngine(), dkcAllocThreadLock(), dkcAllocUniqueID(), dkcCircularStreamDump(), dkcDistCountSortChar(), dkcDistCountSortInt(), dkcDistCountSortShort(), dkcLoadLibrary(), dkcNewSingleList(), と dkcOpenFileWithSignature().

00112                               {
00113     void *ptr;
00114     ptr = malloc(size);
00115     if(NULL==ptr) return NULL;
00116     memset(ptr,0,size);
00117     return ptr;
00118 }

DKC_EXTERN void WINAPI dkcCheckMemoryLeak BOOL  flag  ) 
 

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

参照先 BOOL.

00569                                          {
00570 
00571 }

DKC_EXTERN BOOL dkcCheckOverflowULONG ULONG  a1,
ULONG  a2
 

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

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

参照先 BOOL, DKC_INLINE, FALSE, SWAP_NUM, と TRUE.

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

00644                                                         {
00645     ULONG maxv = ULONG_MAX;
00646   ULONG halfv = maxv / 2 ;
00647   ULONG x = a1,y = a2;
00648   if(x < y){
00649     SWAP_NUM(x,y);
00650   }
00651   if(x > halfv + 1){
00652     if(y >= halfv){
00653       return TRUE;
00654     }
00655   }
00656   return FALSE;
00657 }

DKC_EXTERN BOOL WINAPI dkcCreateEmptyFile const char *  filename  ) 
 

空ファイルを作る。

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

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

参照元 dkcFileCopyEx().

00385                                                     {
00386     FILE *fp;
00387     fp = fopen( filename , "wb" ) ;//wb
00388     if(fp==NULL) return FALSE;
00389     fclose( fp ) ;
00390     return TRUE;
00391 }

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

戻り値:
almost TRUE(1)

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

参照先 edk_FAILED, MB, NULL, NULL_CHAR_ARRAY, ODS, SET_VA_LIST_C, と TRUE.

00034 {
00035     char s[1024];
00036     char ss[1024 * 2];
00037     
00038     int va_list_result;
00039     va_list Valist;
00040 
00041     NULL_CHAR_ARRAY(s);
00042     NULL_CHAR_ARRAY(ss);
00043     
00044     if(message){
00045         SET_VA_LIST_C(Valist,va_list_result,s,sizeof(s),message);
00046     }else{
00047         //SET_VA_LIST(s,sizeof(s),"No message");
00048         _snprintf(s,sizeof(s),"No message\n");
00049     }
00050 
00051     _snprintf(ss,sizeof(ss),
00052         "DKUTIL_ASSERT(%s):\nfile:%s / \n line:%d / \n message: %s",
00053         expression,filename,line,s);
00054 
00055 
00056 
00057 #ifdef NDEBUG//release
00058 #   ifdef WIN32
00059         ODS(ss);
00060     //::MessageBox(NULL,ss,"ERROR ASSERTION !!",MB_OK);
00061     {
00062         LPCTSTR name="ERROR_TEMP.txt";
00063         {
00064             //ファイルをオープン
00065             FILE *fp;
00066             if(NULL != (fp = fopen( name , "at" ))){
00067             
00068                 // エラーログファイルに書き出す
00069                 fputs( ss , fp ) ;
00070                 fclose( fp ) ;
00071             }
00072         }
00073         ShellExecute(NULL, "open",name, NULL, NULL, SW_SHOWNORMAL);
00074         DeleteFile(name);
00075     }
00076     MB("このテキストをこのソフトの開発者に渡せば、バグ発見の近道なります。\n \
00077         開発者に知らせるときはこのテキストを転記してあげましょう。");
00078     if(IDYES==MessageBox(NULL,
00079         "このままこのソフトを起動しつづけると、更なるエラーが発生する可能性があります。\n終了しますか?",
00080         "あってはいけない エラー!!!",
00081         MB_YESNO))
00082     {
00083         exit(edk_FAILED);
00084         //terminate();
00085     }else{
00086     }
00087 #   else    //else of win32
00088     
00089     fprintf(stderr,ss);
00090     exit(edk_FAILED);
00091 
00092 #   endif //end of win32
00093 
00094 #else //debug
00095 
00096 #   ifdef WIN32
00097         ODS(ss);
00098     fprintf(stderr,ss);
00099     //_CrtDebugBreak();
00100     DebugBreak();
00101 #   else //else of win32
00102 
00103     fprintf(stderr,ss);
00104     Debugger();
00105 
00106 #   endif //end of win32
00107 #endif//end of NDEBUG
00108     //assert(ss);
00109     
00110     return TRUE;
00111 }

DKC_EXTERN int WINAPI dkcFClose FILE **  ptr  ) 
 

fcloseのラッパー

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

参照先 DKC_EXTERN, edk_ArgumentException, edk_SUCCEEDED, と NULL.

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

00285                                            {
00286     if(NULL==ptr || NULL==*ptr) return edk_ArgumentException;
00287     fclose(*ptr);
00288     *ptr = NULL;
00289     return edk_SUCCEEDED;
00290 }

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

fopenのラッパー

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

参照先 DKC_EXTERN.

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

00281                                                                         {
00282     return fopen(filename,mode);
00283 }

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

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

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

参照先 BYTE, DKC_EXTERN, と dkcmNOT_ASSERT.

参照元 GetHeader().

00292 {
00293     size_t count;
00294     size_t tc,tsize;
00295     BYTE *tbuffer;
00296 
00297     //read size
00298     tsize = size;
00299     //temp variable
00300     tc = 0;
00301     //offset counter
00302     count = 0;
00303     //byte type pointer
00304     tbuffer = (BYTE *)buffer;
00305     for(;;)
00306     {
00307         //error check
00308         if(ferror(fp) ){
00309             break;
00310         }
00311         if(feof(fp)){
00312             break;
00313         }
00314         //read
00315         tc = fread(&tbuffer[count],1,tsize,fp);
00316         //update
00317         tsize -= tc;
00318         count += tc;
00319 
00320         if(count == size){
00321             break;
00322         }
00323 #   ifdef DEBUG
00324         //ありえないエラーチェック
00325         dkcmNOT_ASSERT(count > size);
00326 #   else
00327         if(count > size){
00328             break;
00329         }
00330 #   endif
00331     }
00332     return count;
00333 }

DKC_EXTERN int WINAPIV dkcFree void **  p  ) 
 

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

参照先 edk_FAILED, edk_SUCCEEDED, と NULL.

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

00119                      {
00120     if(!*p) return edk_FAILED;
00121     free(*p);
00122     *p = NULL;
00123     return edk_SUCCEEDED;
00124 }

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

dkcFReadAll() dkcFReadAllのfwrite版

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

参照先 BYTE, DKC_EXTERN, と dkcmNOT_ASSERT.

00335                                                                         {
00336     size_t count;
00337     size_t tc,tsize;
00338     BYTE *tbuffer;
00339 
00340     //read size
00341     tsize = size;
00342     //temp variable
00343     tc = 0;
00344     //offset counter
00345     count = 0;
00346     //byte type pointer
00347     tbuffer = (BYTE *)buffer;
00348     for(;;)
00349     {
00350         //error check
00351         if(ferror(fp) ){
00352             break;
00353         }
00354         if(feof(fp)){
00355             break;
00356         }
00357         //read
00358         tc = fwrite(&tbuffer[count],1,tsize,fp);
00359         //update
00360         tsize -= tc;
00361         count += tc;
00362 
00363         if(count == size){
00364             break;
00365         }
00366 #   ifdef DEBUG
00367         //ありえないエラーチェック
00368         dkcmNOT_ASSERT(count > size);
00369 #   else
00370         if(count > size){
00371             break;
00372         }
00373 #   endif
00374     }
00375     return count;
00376 
00377 }

DKC_EXTERN const char* WINAPI dkcGetPathSep  ) 
 

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

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

参照先 dkcdPATH_SEP.

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

00574                                   {
00575 #ifdef WIN32
00576     static char target[3]={dkcdPATH_SEP,'/','\0'};
00577 #else
00578     static char target[3]={dkcdPATH_SEP,'\0'};
00579 #endif
00580     return target;
00581 }

DKC_EXTERN BOOL dkcIs_foepn_mode const char *  s  ) 
 

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

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

参照先 BOOL, FALSE, と TRUE.

00125                                     {
00126     /* wrtb+ */
00127     const char *ms= "wrtb+";
00128     size_t slen = strlen(s);
00129     size_t mslen = strlen(ms);
00130     size_t i,j;
00131     int flag = FALSE;
00132     for(i=0;i<slen;i++){
00133         for(j=0;j<mslen;j++){
00134             if(ms[j]==s[i]){
00135                 flag = TRUE;
00136                 break;
00137             }
00138         }
00139         if(TRUE!=flag){
00140             return FALSE;
00141         }else{
00142             flag = FALSE;
00143         }
00144     }
00145     return TRUE;
00146 }

DKC_EXTERN BOOL dkcIsLittleEndian  ) 
 

little endian ならTRUE

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

参照先 BOOL, と DKC_INLINE.

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

00638                                     {
00639     int x=1;
00640     return (BOOL)((*(char*)&x));
00641 }

DKC_EXTERN BOOL WINAPI dkcIsMMX  ) 
 

MMXが使えるならTRUE.

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

参照先 BOOL, と FALSE.

参照元 CheckMMX().

00615                           {
00616   return FALSE;
00617 }

DKC_EXTERN BOOL WINAPI dkcIsNativePathString const char *  s,
size_t  size
 

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

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

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

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

00018                                                            {
00019 
00020     size_t i=0;
00021     if(s==NULL) return edk_FAILED;
00022     for(;i<size;i++){
00023         if(dkcmIS_INVALID_PATH_CHAR(s[i]))
00024         {
00025             return FALSE;
00026         }
00027     }
00028     return TRUE;
00029 }

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

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

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

参照先 dkcLoadFile().

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

00394                                                                                    {//="rb"
00395     return dkcLoadFile(data,size,fname,"rb",readsize);
00396 }

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

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

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

参照先 dkcLoadFile().

00401                                                                                    {
00402     return dkcLoadFile(text,length,fname,"rt",readsize);
00403 }

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

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

参照先 DKC_INLINE, dkcmNOT_ASSERT, と LONGLONG.

00512                                                                               {
00513     LONG *o = (LONG *)&src;
00514     dkcmNOT_ASSERT(sizeof(LONG) * 2 != sizeof(LONGLONG));
00515     *high = o[0];
00516     *low = o[1];
00517 }

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

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

参照先 dkcReallocateEx().

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

00182 {
00183     return dkcReallocateEx(realloc,NewPtr,NewSize,OldPtr);
00184 }

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.c211 行で定義されています。

参照先 DKC_REALLOC_F_TYPE, dkcReallocateSizeFunction(), edk_ArgumentException, edk_FAILED, edk_SUCCEEDED, と NULL.

00215 {
00216     void *ptr = NULL;
00217     size_t want_size = OldSize / 8;
00218     size_t ra_size = dkcReallocateSizeFunction(OldSize,
00219          (want_size <= 20) ? 20 : want_size
00220     );
00221     size_t div = 8;
00222     size_t tmp_ra = ra_size / div;
00223     size_t i;
00224     if(NULL== your_realloc /*|| NULL==*NewPtr*/ || NULL == *OldPtr ||
00225         0==OldSize  || NULL==reallocated_size   
00226     ){
00227         return edk_ArgumentException;//アホ引数入れるな!!
00228     }
00229 
00230     for(i=0;i<div;i++){
00231         ptr = your_realloc(*OldPtr,ra_size);
00232         if(NULL==ptr){
00233             if(OldSize > (ra_size -= tmp_ra)){//とりあえずtmp_ra分を引く。
00234                 break;//こら望みなしだわ
00235             }
00236             continue;
00237         }else{
00238             break;
00239         }
00240     }
00241     if(NULL==ptr) return edk_FAILED;
00242 
00243     //更新
00244     *NewPtr = ptr;  
00245     *OldPtr = NULL;
00246 
00247     *reallocated_size = ra_size;
00248 
00249     return edk_SUCCEEDED;
00250 }

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.c186 行で定義されています。

参照先 DKC_REALLOC_F_TYPE, edk_ArgumentException, edk_FAILED, edk_SUCCEEDED, と NULL.

参照元 dkcReallocate().

00190 {
00191     void *ptr = NULL;
00192 
00193     if(NULL== your_realloc  /*|| NULL == *OldPtr ||
00194         0==OldSize*/
00195     ){
00196         return edk_ArgumentException;//アホ引数入れるな!!
00197     }
00198 
00199     ptr = your_realloc(*OldPtr,NewSize);
00200     if(NULL==ptr) return edk_FAILED;
00201 
00202     //更新
00203     *OldPtr = NULL;
00204     *NewPtr = ptr;
00205     
00206     return edk_SUCCEEDED;
00207 }

DKC_EXTERN size_t dkcReallocateSizeFunction size_t  OldSize,
size_t  ExpandSize
 

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

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

00162                                                                   {
00163     //y=-25.43035 * pow(x,2) + 116.7214
00164     //y = -0.00000018 * pow(x,2) + 0.00019
00165     //y = -99.9999 * pow(OldSize,2) + 104857600;
00166     //y = 0.105263 * x * x + 10.52631
00167     //double x;
00168 //  size_t size;
00169     if(OldSize <= 1024 * 5){//5KB以内なら2倍
00170         return OldSize * 2;
00171     }else if(OldSize >= 1024 * 1024 * 10 || 0==OldSize)
00172     {//10MB以上なら + ExpandSize
00173         return OldSize + ExpandSize;
00174     }
00175     //それ以外ならExpandSize * 3
00176     return OldSize + ExpandSize * 3; 
00177     //return OldSize * 2;//ひでぇ関数だ。
00178 }

DKC_EXTERN USHORT dkcReverseEndian16 USHORT  x  ) 
 

endian change 16 bit version

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

参照先 DKC_INLINE.

参照元 dkcStreamProcess16().

00621                                               {
00622     return (USHORT)((x >> 8) | (x << 8));
00623 }

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.c629 行で定義されています。

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

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

00629                                                      {
00630 
00631     return (
00632         (ULONGLONG)dkcReverseEndian32((DWORD)(x & 0x00000000ffffffff)) << 32)
00633         | 
00634         dkcReverseEndian32((DWORD)(x >> 32)
00635     );
00636 
00637 }

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

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

参照先 dkcRotateShiftRightMemoryLogic(), DKUTIL_SUCCEEDED, edk_FAILED, edk_OutOfMemory, edk_SUCCEEDED, と NULL.

参照元 bse_target_to_table().

00886                                                                     {
00887     //size_t i = 0;
00888     void *pd = NULL;
00889     int r = edk_FAILED;
00890 
00891     pd = malloc(num);
00892     if(NULL==pd){
00893         return edk_OutOfMemory;
00894     }
00895     if(DKUTIL_SUCCEEDED(dkcRotateShiftRightMemoryLogic(d,size,num,pd,num))){
00896         r = edk_SUCCEEDED;
00897     }
00898 
00899     free(pd);
00900     
00901     return r;
00902 
00903 }

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

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

参照先 BYTE, DKC_INLINE, edk_FAILED, と edk_SUCCEEDED.

参照元 dkcRotateShiftRightMemory().

00865 {
00866     BYTE *dest = (BYTE *)d;
00867     size_t temp;
00868 
00869     if(n > worksize){
00870         return edk_FAILED;
00871     }
00872     for(;;){
00873         if(n < size){
00874             break;
00875         }
00876         n -= size;
00877     }
00878     temp = size - n;
00879     memcpy(workbuff,dest + temp,n);
00880     memmove(dest + n,dest,temp);
00881     memcpy(dest,workbuff,n);
00882     return edk_SUCCEEDED;
00883 
00884 }

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

fopenのファイル関数を使ってバイナリセーブを行う。

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

参照先 dkcSaveFile().

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

00381                                                                         {//="wb"
00382     return dkcSaveFile(data,size,fname,"wb");
00383 }

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

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

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

参照先 dkcSaveFile().

00398                                                                         {
00399     return dkcSaveFile(text,length,fname,"wt");
00400 }

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.c671 行で定義されています。

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

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

00672 {
00673 
00674     int i,j,left, right;
00675 
00676     void *x = malloc(width);
00677     void *a = malloc(n * width);
00678     if(NULL==x || NULL==a){
00679         return edk_ArgumentException;
00680     }
00681     if(n > INT_MAX){
00682         return edk_FAILED;
00683     }
00684     
00685 
00686     memcpy(a,a_src,width * n);
00687 
00688 
00689     left = 0;  right = n - 1;
00690 
00691     while (left < right) 
00692     {
00693 
00694         memcpy(x,   (const void *)get_offset(a,k * width),width);
00695         i = left;
00696         j = right;
00697 
00698         for ( ; ; ) {
00699 
00700             while( less(get_offset(a,i * width),x) > 0){
00701             //while( *(int *)get_offset(a,i * width) < *(int *)x){
00702                 i++;
00703             }
00704 
00705             while( less(x,get_offset(a,j * width)) > 0){
00706             //while( *(int *)x < *(int *)get_offset(a,j * width) ){
00707                 j--;
00708             }
00709 
00710             if (i > j){
00711                 break;
00712             }
00713             
00714 
00715             dkcSwapFast(
00716                 get_offset(a,i * width),
00717                 get_offset(a,j * width),
00718                 width
00719                 );
00720             
00721             i++;
00722             j--;
00723         }
00724         if (j < k){
00725             left  = i;
00726         }
00727         if (k < i){
00728             right = j;
00729         }
00730     }
00731 
00732     //ゲットする
00733     {
00734         //printf("%d",*(int *)get_offset(a,k * width));
00735 
00736         memcpy(dest,(const void *)get_offset(a,k * width),width);
00737 
00738     }
00739     free(x);
00740     free(a);
00741 
00742     return edk_SUCCEEDED;
00743 
00744 }

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

最大値を選択する

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

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

参照先 DKC_COMPARE_TYPE, DKC_INLINE, dkcSelect(), と edk_FAILED.

00747                                                                                                            {
00748     if(n-1 > INT_MAX){
00749         return edk_FAILED;
00750     }
00751     return dkcSelect(a,a_src,n,(int)n-1,width,less);
00752 }

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

最小値を選択する

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

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

参照先 DKC_COMPARE_TYPE, DKC_INLINE, と dkcSelect().

00753                                                                                                            {
00754     return dkcSelect(a,a_src,n,(int)0,width,less);
00755 }

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

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

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

参照先 dkcSwap64(), と ULONGLONG.

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

00491 {
00492     dkcSwap64((ULONGLONG *)p1,(ULONGLONG *)p2,size);
00493 }

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.c455 行で定義されています。

参照先 BYTE, SWAP_NUM, と ULONGLONG.

参照元 dkcSwap().

00455                                                               {
00456     size_t i;
00457     BYTE buf;
00458     size_t mod_ = size % sizeof(ULONGLONG);
00459     size_t cnt = size / sizeof(ULONGLONG);
00460     //char *tp1 = (char *)p1,*tp2 = (char *)p2;
00461     for(i=0;i<cnt;i++){
00462         SWAP_NUM(p1[i],p2[i]);
00463     }
00464     for(i=0;i<mod_;i++){
00465         
00466         //SWAP_NUM((char)tp1[size - mod_ + 1],(char)tp2[size - mod_ + i]);
00467         /*a = b - a ;\
00468     b -= a ;\
00469     a += b
00470         */
00471         /*( ( ((char *) p2)[size - mod_ + i]))
00472             = (char)( ( ((char *) p2)[size - mod_ + i])) - 
00473             (char)( ( ((char *) p1)[size - mod_ + i]));
00474         
00475         ( ( ((char *) p2)[size - mod_ + i])) -= ( ( ((char *) p1)[size - mod_ + i]));
00476 
00477         ( ( ((char *) p1)[size - mod_ + i])) += ( ( ((char *) p2)[size - mod_ + i]));
00478             */
00479         
00480         
00481         buf = (((BYTE *)p1)[size - mod_ + i]);
00482         (((BYTE *)p1)[size - mod_ + i]) = 
00483             (((BYTE *)p2)[size - mod_ + i]) ;
00484         (((BYTE *)p2)[size - mod_ + i]) = buf;
00485         
00486     }
00487 
00488 }

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

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

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

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

参照先 dkcmNOT_ASSERT, と NULL.

参照元 dkcSelect().

00406 {
00407     void *p = malloc(size);
00408     dkcmNOT_ASSERT(NULL==p);
00409     memcpy(p,p1,size);
00410     memcpy(p1,p2,size);
00411     memcpy(p2,p,size);
00412     free(p);
00413 }

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

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

参照先 DKC_INLINE, と ULONGLONG.

00497                                                                                    {
00498     //*dest = (ULONGLONG)((high << 32) + low);
00499     *dest = (ULONGLONG)high << 32;
00500     *dest += low;
00501         //( high * MAXDWORD ) + low;
00502 }

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

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

参照先 DKC_INLINE, と LONGLONG.

00519                                                                               {
00520     //*dest = (ULONGLONG)((high << 32) + low);
00521     *dest = (LONGLONG)high << 32;
00522     *dest += low;
00523 
00524 }

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

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

参照先 DKC_INLINE, dkcmNOT_ASSERT, DWORD, と ULONGLONG.

00504                                                                                      {
00505     DWORD *o = (DWORD *)&src;
00506     dkcmNOT_ASSERT(sizeof(DWORD) * 2 != sizeof(ULONGLONG));
00507     //エンディアン問題をどうにかしよう!
00508     *dhigh = o[0];
00509     *dlow = o[1];
00510 }


dkutil_cに対してTue Oct 19 03:35:57 2004に生成されました。 doxygen 1.3.6