( *(out_File) = fopen( Path, Mode ), (*(out_File) == NULL) ? (1) : (0) )\r
#endif\r
\r
+#include <stdlib.h> \r
+ \r
#include <string.h> \r
\r
#include <stdarg.h> \r
/*=================================================================*/\r
\r
/***********************************************************************\r
- <<< [fopen_ccs] >>> \r
-************************************************************************/\r
-#if defined(_UNICODE) \r
- #define fopen_ccs ",ccs=UNICODE"\r
-#else\r
- #define fopen_ccs "t"\r
-#endif\r
-\r
-\r
- \r
-/***********************************************************************\r
<<< [C99Type] >>> \r
************************************************************************/\r
-typedef signed int int32_t; /* for 32bit compiler */\r
-typedef signed short int16_t;\r
-typedef signed char int8_t;\r
-typedef unsigned int uint_t;\r
-typedef unsigned int uint32_t; /* for 32bit compiler */\r
+typedef int int_t; /* MISRA-C:1998 No.13 */\r
+typedef signed int int32_t; /* For 32bit compiler */\r
+typedef signed short int16_t;\r
+typedef signed char int8_t;\r
+typedef unsigned int uint_t; /* MISRA-C:1998 No.13 */ /* This is not C99 */\r
+typedef unsigned int uint32_t; /* For 32bit compiler */\r
typedef unsigned short uint16_t;\r
typedef unsigned char uint8_t;\r
-typedef float float32_t;\r
-typedef double float64_t;\r
-typedef char bool_t; /* this is not C99 */\r
+typedef float float32_t; /* This is not C99 */\r
+typedef double float64_t; /* This is not C99 */\r
+typedef unsigned int bool_t; /* MISRA-C:1998 No.13 */ /* This is not C99 */\r
+typedef unsigned int bool32_t; /* For 32bit compiler */\r
+typedef unsigned short bool16_t;\r
+typedef unsigned char bool8_t;\r
+\r
+\r
+ \r
+/*********************************************************************************************\r
+ <<< [BitField] [BIT_FIELD_ENDIAN] [BIT_FIELD_LITTLE_ENDIAN] [BIT_FIELD_BIG_ENDIAN] >>> \r
+**********************************************************************************************/\r
+typedef unsigned int BitField; \r
+typedef uint32_t BitField32;\r
+#define BIT_FIELD_ENDIAN BIT_FIELD_LITTLE_ENDIAN\r
+#define BIT_FIELD_LITTLE_ENDIAN 1\r
+#define BIT_FIELD_BIG_ENDIAN 2\r
\r
\r
\r
\r
\r
\r
-/*********************************************************************************************\r
- <<< [BitField] [BIT_FIELD_ENDIAN] [BIT_FIELD_LITTLE_ENDIAN] [BIT_FIELD_BIG_ENDIAN] >>> \r
-**********************************************************************************************/\r
-typedef unsigned int BitField; \r
-typedef uint32_t BitField32;\r
-#define BIT_FIELD_ENDIAN BIT_FIELD_LITTLE_ENDIAN\r
-#define BIT_FIELD_LITTLE_ENDIAN 1\r
-#define BIT_FIELD_BIG_ENDIAN 2\r
+/***********************************************************************\r
+ <<< [fopen_ccs] >>> \r
+************************************************************************/\r
+#if defined(_UNICODE) \r
+ #define fopen_ccs ",ccs=UNICODE"\r
+#else\r
+ #define fopen_ccs "t"\r
+#endif\r
+\r
+\r
+ \r
+/***********************************************************************\r
+ <<< [FlagsOnlyConfigClass] >>> \r
+************************************************************************/\r
+typedef struct _FlagsOnlyConfigClass FlagsOnlyConfigClass;\r
+struct _FlagsOnlyConfigClass {\r
+ BitField Flags;\r
+};\r
\r
\r
\r
\r
\r
/*=================================================================*/\r
+/* <<< [DebugTools/DebugTools.h] >>> */ \r
+/*=================================================================*/\r
+ \r
+#if __cplusplus\r
+ extern "C" { /* Start of C Symbol */ \r
+#endif\r
+\r
+\r
+#ifndef NDEBUG\r
+ #define NDEBUG_ERROR\r
+#else\r
+ #define NDEBUG_ERROR ___cut_NDEBUG_ERROR\r
+#endif\r
+\r
+ \r
+#ifndef dll_global_g_DebugBreakCount\r
+ #define dll_global_g_DebugBreakCount /* [dll_global_g_DebugBreakCount_NotDLL] */\r
+#endif\r
+ \r
+/***********************************************************************\r
+ <<< [TestableDebugBreak] >>> \r
+************************************************************************/\r
+#define TestableDebugBreak() ( g_DebugBreakCount++, (TestableDebugBreak_isEnabled() ? (DebugBreak(),0) : 0 ) )\r
+int TestableDebugBreak_isEnabled(void);\r
+dll_global_g_DebugBreakCount extern int g_bTestableDebugBreak_Disable;\r
+dll_global_g_DebugBreakCount extern int g_DebugBreakCount;\r
+\r
+\r
+ \r
+#if __cplusplus\r
+ } /* End of C Symbol */ \r
+#endif\r
+\r
+\r
+ \r
+/*=================================================================*/\r
/* <<< [Error4/Error4.h] >>> */ \r
/*=================================================================*/\r
\r
<<< [errnum_t] >>> \r
************************************************************************/\r
typedef int errnum_t; /* 0=no error */\r
-enum { NoError = 0 };\r
-enum { Error4_Err_Base = 0x00000400 }; /* 0x001, 0x400 .. 0x4FF : Reseved meaning by clib */\r
-enum { Error4_Err_Mask = 0xFFFFFF00 };\r
-enum { E_Others = 0x001 }; /* 1 */\r
-enum { E_Original = 0x101 }; /* 257 */\r
-enum { E_GetLastError = 0x401 }; /* 1025 */\r
-enum { E_HResult = 0x402 }; /* 1026 */\r
-enum { E_Errno = 0x403 }; /* 1027 */\r
-enum { E_Unknown = 0x404 }; /* 1028 */\r
-enum { E_InError = 0x405 }; /* 1029 */\r
-enum { E_InFinally = 0x406 }; /* 1030 */\r
-enum { E_InvalidValue = 0x407 }; /* 1031 */\r
-enum { E_NotImplementYet = 0x409 }; /* 1033 */\r
-enum { E_Limitation = 0x40F }; /* 1039 */\r
-enum { E_FewMemory = 0x410 }; /* 1040 */\r
-enum { E_FewArray = 0x411 }; /* 1041 */\r
-enum { E_CannotOpenFile = 0x412 }; /* 1042 */\r
-enum { E_NotFoundDllFunc = 0x413 }; /* 1043 */\r
-enum { E_BadCmdID = 0x414 }; /* 1044 */\r
-enum { E_NotFoundSymbol = 0x415 }; /* 1045 */\r
-enum { E_NoNext = 0x416 }; /* 1046 */\r
-enum { E_AccessDenied = 0x417 }; /* 1047 */\r
-enum { E_PathNotFound = 0x418 }; /* 1048 */\r
-enum { E_OutOfWritable = 0x425 }; /* 1061 */\r
-enum { E_NotInitGlobal = 0x46B }; /* 1131 */\r
-enum { E_DebugBreak = 0x4DB }; /* 1243 */\r
-enum { E_ExitTest = 0x4E7 }; /* 1255 */\r
-\r
-\r
- \r
-/***********************************************************************\r
- <<< [Err2_setBreakErrID] >>> \r
+\r
+#ifndef NO_ERROR /* same as windows.h */\r
+ enum { NO_ERROR = 0 }; /* NO_ERROR symbol is for magic code warning only */\r
+#endif\r
+\r
+enum { E_CATEGORY_MASK = 0xFFFFFF00 }; /* E_CATEGORY_* */\r
+enum { E_OFFSET_MASK = 0x000000FF };\r
+\r
+#ifndef E_CATEGORY_COMMON /* If not duplicated */\r
+ #define E_CATEGORY_COMMON E_CATEGORY_COMMON\r
+ enum { E_CATEGORY_COMMON = 0x00000400 }; /* 0x001, 0x400 .. 0x4FF : Reseved meaning by clib */\r
+#endif\r
+\r
+#ifndef E_OTHERS\r
+ #define E_OTHERS E_OTHERS\r
+ enum { E_OTHERS = 1 };\r
+#endif\r
+\r
+enum { E_GET_LAST_ERROR = E_CATEGORY_COMMON | 0x01 }; /* 1025 */\r
+enum { E_HRESULT = E_CATEGORY_COMMON | 0x02 }; /* 1026 */\r
+enum { E_ERRNO = E_CATEGORY_COMMON | 0x03 }; /* 1027 */\r
+enum { E_UNKNOWN = E_CATEGORY_COMMON | 0x04 }; /* 1028 */\r
+enum { E_IN_ERROR = E_CATEGORY_COMMON | 0x05 }; /* 1029 */\r
+enum { E_IN_FINALLY = E_CATEGORY_COMMON | 0x06 }; /* 1030 */\r
+enum { E_INVALID_VALUE = E_CATEGORY_COMMON | 0x07 }; /* 1031 */\r
+enum { E_NOT_IMPLEMENT_YET = E_CATEGORY_COMMON | 0x09 }; /* 1033 */\r
+enum { E_ORIGINAL = E_CATEGORY_COMMON | 0x0A }; /* 1034 */\r
+enum { E_LIMITATION = E_CATEGORY_COMMON | 0x0F }; /* 1039 */\r
+enum { E_FEW_MEMORY = E_CATEGORY_COMMON | 0x10 }; /* 1040 */\r
+enum { E_FEW_ARRAY = E_CATEGORY_COMMON | 0x11 }; /* 1041 */\r
+enum { E_CANNOT_OPEN_FILE = E_CATEGORY_COMMON | 0x12 }; /* 1042 */\r
+enum { E_NOT_FOUND_DLL_FUNC = E_CATEGORY_COMMON | 0x13 }; /* 1043 */\r
+enum { E_BAD_COMMAND_ID = E_CATEGORY_COMMON | 0x14 }; /* 1044 */\r
+enum { E_NOT_FOUND_SYMBOL = E_CATEGORY_COMMON | 0x15 }; /* 1045 */\r
+enum { E_NO_NEXT = E_CATEGORY_COMMON | 0x16 }; /* 1046 */\r
+enum { E_ACCESS_DENIED = E_CATEGORY_COMMON | 0x17 }; /* 1047 */\r
+enum { E_PATH_NOT_FOUND = E_CATEGORY_COMMON | 0x18 }; /* 1048 */\r
+enum { E_OUT_OF_WRITABLE = E_CATEGORY_COMMON | 0x25 }; /* 1061 */\r
+enum { E_NOT_INIT_GLOBAL = E_CATEGORY_COMMON | 0x6B }; /* 1131 */\r
+enum { E_TIME_OUT = E_CATEGORY_COMMON | 0x70 }; /* 1136 */\r
+enum { E_DEBUG_BREAK = E_CATEGORY_COMMON | 0xDB }; /* 1243 */\r
+enum { E_EXIT_TEST = E_CATEGORY_COMMON | 0xE7 }; /* 1255 */\r
+enum { E_FIFO_OVER = E_CATEGORY_COMMON | 0xF0 }; /* 1264 */\r
+\r
+\r
+ \r
+/***********************************************************************\r
+ <<< [SetBreakErrorID] >>> \r
************************************************************************/\r
#ifndef ERR2_ENABLE_ERROR_BREAK\r
#if ! NDEBUG\r
#endif\r
\r
#if ERR2_ENABLE_ERROR_BREAK\r
- #define IF(x) if( (x) && ( TryOnIfTrue_imp() ? (TestableDebugBreak(),1) : (1) ) )\r
+ /* "IF" is able to break at nearest code raising error */\r
#define IF_D(x) IF(x)\r
+ #define IF(x) \\r
+ if( (x) && ( TryOnIfTrue_imp((const char*)__FILE__,__LINE__) ? (TestableDebugBreak(),1) : (1) ) )\r
\r
#define ASSERT_R( x, goto_err_or_Statement ) \\r
__pragma(warning(push)) \\r
__pragma(warning(disable:4127)) \\r
- do{ IF(!(x)) goto_err_or_Statement; } while(0) /* do-while is CERT standard PRE10-C */ \\r
+ do{ IF(!(x)) { goto_err_or_Statement; } } while(0) /* do-while is CERT standard PRE10-C */ \\r
__pragma(warning(pop))\r
\r
#define ASSERT_D( x, goto_err_or_Statement ) ASSERT_R( x, goto_err_or_Statement )\r
#define ASSERT_R( x, goto_err_or_Statement ) \\r
__pragma(warning(push)) \\r
__pragma(warning(disable:4127)) \\r
- do{ if(!(x)) goto_err_or_Statement; }while(0) /* do-while is CERT standard PRE10-C */ \\r
+ do{ if(!(x)) { goto_err_or_Statement; } }while(0) /* do-while is CERT standard PRE10-C */ \\r
__pragma(warning(pop))\r
\r
#define ASSERT_D( x, goto_err_or_Statement )\r
\r
\r
#if ! ERR2_ENABLE_ERROR_BREAK\r
- #define Err2_setBreakErrID( x )\r
- #define Err2_clear()\r
- #define IfErrThenBreak()\r
+ inline void SetBreakErrorID( int ID ) { ID=ID; /* avoid warning */ }\r
+ inline void ClearError() {}\r
+ inline bool IsErrorMode() { return 0; }\r
+ inline void IfErrThenBreak() {}\r
typedef int ErrStackAreaClass; // dummy type\r
#define PushErr( ErrStackArea ) UNREFERENCED_VARIABLES( ErrStackArea )\r
#define PopErr( ErrStackArea ) UNREFERENCED_VARIABLES( ErrStackArea )\r
#else\r
- void Err2_setBreakErrID( int ID );\r
- void Err2_clear(void);\r
+ void SetBreakErrorID( int ID );\r
+ void ClearError(void);\r
+ bool IsErrorMode(void);\r
void IfErrThenBreak(void);\r
typedef struct _Err2 ErrStackAreaClass;\r
void PushErr( ErrStackAreaClass* ErrStackArea );\r
void PopErr( ErrStackAreaClass* ErrStackArea );\r
\r
- int TryOnIfTrue_imp(void);\r
+ int TryOnIfTrue_imp( const char* FilePath, int LineNum );\r
\r
typedef struct _Err2 Err2;\r
struct _Err2 {\r
int ErrID;\r
int BreakErrID;\r
int IsErr;\r
+ const char* FilePath;\r
+ int LineNum;\r
};\r
- extern Err2 g_Err2;\r
+ dll_global_g_DebugBreakCount extern Err2 g_Err2;\r
#endif\r
\r
\r
void Error4_printf( const TCHAR* format, ... );\r
void Error4_getErrStr( int ErrNum, TCHAR* out_ErrStr, size_t ErrStrSize );\r
void Error4_clear( int err_num );\r
+errnum_t SaveWindowsLastError(void);\r
\r
\r
\r
#endif\r
\r
/*[GetIsCheckArg][SetIsCheckArg]*/\r
+#if CHECK_ARG\r
extern bool g_IsCheckArg;\r
inline bool GetIsCheckArg(void) { return g_IsCheckArg; }\r
inline void SetIsCheckArg( bool IsCheckArg ) { g_IsCheckArg = IsCheckArg; }\r
+#endif\r
+\r
+\r
+ \r
+/***********************************************************************\r
+ <<< [INVALID_VALUE] >>> \r
+************************************************************************/\r
+enum { INVALID_VALUE = 0xDEDEDEDE };\r
+\r
+\r
+ \r
+/***********************************************************************\r
+ <<< [DUMMY_INITIAL_VALUE] >>> \r
+************************************************************************/\r
+#ifndef NDEBUG\r
+ enum { DUMMY_INITIAL_VALUE = 0xDEDEDEDE };\r
+ enum { DUMMY_INITIAL_VALUE_8BIT = 0xDE };\r
+ enum { DUMMY_INITIAL_VALUE_16BIT = 0xDEDE };\r
+ #ifdef _UNICODE\r
+ enum { DUMMY_INITIAL_VALUE_TCHAR = 0xDEDE };\r
+ #else\r
+ enum { DUMMY_INITIAL_VALUE_TCHAR = 0xDE - 0x100 }; /* 0x100 is to change to signed type */\r
+ #endif\r
+ /* Disable VC++ warning C4701 : local variable may be used without having been initialized */\r
+ /* 0xDEDEDEDE means "not initialized" */\r
+#else\r
+ enum { DUMMY_INITIAL_VALUE = 0 };\r
+ enum { DUMMY_INITIAL_VALUE_8BIT = 0 };\r
+ enum { DUMMY_INITIAL_VALUE_16BIT = 0 };\r
+ enum { DUMMY_INITIAL_VALUE_TCHAR = 0 };\r
+ /* 0 reduces code size */\r
+#endif\r
\r
\r
\r
<<< [UNREFERENCED_VARIABLES] >>> \r
************************************************************************/\r
#ifdef __linux__\r
+ #define UNREFERENCED_VARIABLE( x )\r
#define UNREFERENCED_VARIABLES( x )\r
#else\r
+ #define UNREFERENCED_VARIABLE( x ) x = x\r
#define UNREFERENCED_VARIABLES( x ) x\r
#endif\r
\r
\r
\r
+/***********************************************************************\r
+ <<< [Error4_VariablesClass] >>> \r
+************************************************************************/\r
+typedef struct _Error4_VariablesClass Error4_VariablesClass;\r
+struct _Error4_VariablesClass {\r
+ DWORD WindowsLastError;\r
+};\r
+\r
+Error4_VariablesClass* Get_Error4_Variables(void);\r
+\r
+#ifdef _DEBUG\r
+ extern Error4_VariablesClass* g_Error4_Variables;\r
+#endif\r
+\r
+\r
+ \r
#if __cplusplus\r
} /* End of C Symbol */ \r
#endif\r
\r
/*=================================================================*/\r
-/* <<< [DebugTools/DebugTools.h] >>> */ \r
+/* <<< [CRT_plus_2/CRT_plus_2.h] >>> */ \r
/*=================================================================*/\r
\r
-#if __cplusplus\r
- extern "C" { /* Start of C Symbol */ \r
-#endif\r
+/***********************************************************************\r
+ <<< [MallocMemory] >>> \r
+************************************************************************/\r
+inline errnum_t MallocMemory( void* out_MemoryAddress, size_t MemorySize )\r
+{\r
+ void** out = (void**) out_MemoryAddress;\r
\r
+ *out = malloc( MemorySize );\r
+\r
+ if ( *out == NULL )\r
+ { return E_FEW_MEMORY; }\r
+ else\r
+ { return 0; }\r
+}\r
\r
-#ifndef NDEBUG\r
- #define NDEBUG_ERROR\r
-#else\r
- #define NDEBUG_ERROR ___cut_NDEBUG_ERROR\r
-#endif\r
\r
- \r
-#ifndef dll_global_g_DebugBreakCount\r
- #define dll_global_g_DebugBreakCount /* [dll_global_g_DebugBreakCount_NotDLL] */\r
-#endif\r
\r
/***********************************************************************\r
- <<< [TestableDebugBreak] >>> \r
+ <<< [FreeMemory] >>> \r
************************************************************************/\r
-#define TestableDebugBreak() ( g_DebugBreakCount++, (TestableDebugBreak_isEnabled() ? (DebugBreak(),0) : 0 ) )\r
-int TestableDebugBreak_isEnabled(void);\r
-dll_global_g_DebugBreakCount extern int g_bTestableDebugBreak_Disable;\r
-dll_global_g_DebugBreakCount extern int g_DebugBreakCount;\r
+inline errnum_t FreeMemory( void* in_out_MemoryAddress, errnum_t e )\r
+{\r
+ void* address = *(void**) in_out_MemoryAddress;\r
\r
+ if ( address != NULL )\r
+ { free( address ); }\r
\r
- \r
-#if __cplusplus\r
- } /* End of C Symbol */ \r
-#endif\r
+ *(void**) in_out_MemoryAddress = NULL;\r
+\r
+ return e;\r
+}\r
\r
\r
\r
extern "C" { /* Start of C Symbol */ \r
#endif\r
\r
-int vsprintf_r( char* s, size_t s_size, const char* format, va_list va ); \r
+errnum_t vsprintf_r( char* s, size_t s_size, const char* format, va_list va ); \r
\r
-int vswprintf_r( wchar_t* s, size_t s_size, const wchar_t* format, va_list va ); \r
+errnum_t vswprintf_r( wchar_t* s, size_t s_size, const wchar_t* format, va_list va ); \r
\r
/*[vstprintf_r]*/\r
#if defined(_UNICODE) \r
#define vstprintf_r vsprintf_r\r
#endif\r
\r
-int stprintf_r( TCHAR* s, size_t s_size, const TCHAR* format, ... ); \r
+errnum_t stprintf_r( TCHAR* s, size_t s_size, const TCHAR* format, ... ); \r
\r
-int stcpy_part_r( TCHAR* s, size_t s_size, TCHAR* s_start, TCHAR** p_s_last, \r
+errnum_t stcpy_part_r( TCHAR* s, size_t s_size, TCHAR* s_start, TCHAR** p_s_last, \r
const TCHAR* src, const TCHAR* src_over );\r
-int stprintf_part_r( TCHAR* s, size_t s_size, TCHAR* s_start, TCHAR** p_s_last,\r
+errnum_t stprintf_part_r( TCHAR* s, size_t s_size, TCHAR* s_start, TCHAR** p_s_last,\r
const TCHAR* format, ... );\r
\r
#if __cplusplus\r
#ifndef __SETX_H \r
#define __SETX_H\r
\r
-#if __cplusplus\r
+#ifdef __cplusplus\r
extern "C" { /* Start of C Symbol */\r
#endif\r
\r
************************************************************************/\r
typedef struct _Set2 Set2;\r
struct _Set2 {\r
- void* First;\r
- void* Next;\r
- void* Over;\r
+ void* First;\r
+ void* Next;\r
+ void* Over;\r
+\r
+ #ifdef _DEBUG\r
+ void** PointerOfDebugArray; /* void<type> */\r
+ #endif\r
};\r
\r
#define Set2_initConst( m ) ( (m)->First = NULL, (m)->Next = NULL )\r
#define Set2_isInited( m ) ( (m)->First != NULL )\r
\r
#define Set2_alloc( m, pp, type ) \\r
- Set2_alloc_imp( m, (void*)(pp), sizeof(type) )\r
+ Set2_alloc_imp( m, (void*)(pp), sizeof(type) )\r
\r
int Set2_alloc_imp( Set2* m, void* pm, size_t size );\r
\r
#define Set2_freeLast( m, p, type, e ) \\r
- ( ((char*)(m)->Next - sizeof(type) == (char*)(p)) ? \\r
- (m)->Next = (p), (e) : \\r
- ((e)?(e):E_Others) )\r
+ ( ((char*)(m)->Next - sizeof(type) == (char*)(p)) ? \\r
+ (m)->Next = (p), (e) : \\r
+ ((e)?(e):E_OTHERS) )\r
\r
#define Set2_toEmpty( m ) \\r
- ( (m)->Next = (m)->First, 0 )\r
+ ( (m)->Next = (m)->First, 0 )\r
\r
#define Set2_expandIfOverByAddr( m, OverAddrBasedOnNowFirst ) \\r
- ( (void*)(OverAddrBasedOnNowFirst) <= (m)->Over ? 0 : \\r
- Set2_expandIfOverByAddr_imp( m, OverAddrBasedOnNowFirst ) )\r
+ ( (void*)(OverAddrBasedOnNowFirst) <= (m)->Over ? 0 : \\r
+ Set2_expandIfOverByAddr_imp( m, OverAddrBasedOnNowFirst ) )\r
\r
#define Set2_expandIfOverByOffset( m, Size ) \\r
- Set2_expandIfOverByAddr( m, (char*)(m)->First + (Size) )\r
+ Set2_expandIfOverByAddr( m, (char*)(m)->First + (Size) )\r
int Set2_expandIfOverByAddr_imp( Set2* m, void* OverAddrBasedOnNowFirst );\r
\r
#define Set2_allocMulti( m, out_pElem, ElemType, nElem ) \\r
- Set2_allocMulti_sub( m, out_pElem, sizeof(ElemType) * (nElem) )\r
+ Set2_allocMulti_sub( m, (void*)(out_pElem), sizeof(ElemType) * (nElem) )\r
int Set2_allocMulti_sub( Set2* m, void* out_pElem, size_t ElemsSize );\r
\r
+#define Set2_forEach( self, Item, Item_Over, Type ) \\r
+ *(Item) = (Type*)( (self)->First ), *(Item_Over) = (Type*)( (self)->Next ); \\r
+ *(Item) < *(Item_Over); \\r
+ *(Item) += 1\r
+\r
#define Set2_ref( m, iElem, out_pElem, ElemType ) \\r
- Set2_ref_imp( m, iElem, out_pElem, sizeof(ElemType) )\r
+ Set2_ref_imp( m, iElem, out_pElem, sizeof(ElemType) )\r
\r
int Set2_ref_imp( Set2* m, int iElem, void* out_pElem, size_t ElemSize );\r
\r
#define Set2_getCount( m, Type ) \\r
- ( (Type*)(m)->Next - (Type*)(m)->First )\r
+ ( (Type*)(m)->Next - (Type*)(m)->First )\r
\r
#define Set2_checkPtrInArr( m, p ) \\r
- ( (m)->First <= (p) && (p) < (m)->Over ? 0 : E_NotFoundSymbol )\r
+ ( (m)->First <= (p) && (p) < (m)->Over ? 0 : E_NOT_FOUND_SYMBOL )\r
\r
int Set2_separate( Set2* m, int NextSize, void** allocate_Array );\r
\r
+#ifdef _DEBUG\r
+void Set2_setDebug( Set2* m, void** PointerOfDebugArray );\r
+#endif\r
+\r
\r
-#if __cplusplus\r
+#ifdef __cplusplus\r
} /* End of C Symbol */ \r
#endif\r
#endif\r
extern "C" { /* Start of C Symbol */ \r
#endif\r
\r
-int StrT_cpy( TCHAR* Dst, size_t DstSize, const TCHAR* Src );\r
-int StrT_cat( TCHAR* Dst, size_t DstSize, const TCHAR* Src );\r
-#define StrT_cat( Dst, DstSize, Src ) \\r
- stcpy_part_r( Dst, sizeof(Dst), _tcschr( Dst, _T('\0') ), NULL, Src, NULL )\r
-TCHAR* StrT_malloc_cpy( const TCHAR* Src );\r
-TCHAR* StrT_malloc_cpy_from_char( const char* Src );\r
+errnum_t StrT_cpy( TCHAR* Dst, size_t DstSize, const TCHAR* Src );\r
+errnum_t StrT_cat( TCHAR* Dst, size_t DstSize, const TCHAR* Src );\r
TCHAR* StrT_chrs( const TCHAR* s, const TCHAR* keys );\r
TCHAR* StrT_skip( const TCHAR* s, const TCHAR* keys );\r
\r
+inline errnum_t StrT_cat( TCHAR* Dst, size_t DstSize, const TCHAR* Src )\r
+{\r
+ return stcpy_part_r( Dst, DstSize, _tcschr( Dst, _T('\0') ), NULL, Src, NULL );\r
+}\r
+\r
+\r
+ \r
+/***********************************************************************\r
+ <<< [StrT_Malloc] >>> \r
+************************************************************************/\r
+errnum_t MallocAndCopyString( TCHAR** out_NewString, const TCHAR* SourceString );\r
+errnum_t MallocAndCopyString_char( TCHAR** out_NewString, const char* SourceString );\r
+errnum_t MallocAndCopyStringByLength( TCHAR** out_NewString, const TCHAR* SourceString,\r
+ unsigned CountOfCharacter );\r
+\r
+#ifndef _UNICODE\r
+ #define MallocAndCopyString_char MallocAndCopyString\r
+#endif\r
\r
\r
/***********************************************************************\r
errnum_t StrT_cutLineComment( TCHAR* out_Str, size_t out_Str_Size, const TCHAR* in_Str, const TCHAR* CommentSign );\r
errnum_t StrT_meltCmdLine( TCHAR* out_Str, size_t out_Str_Size, const TCHAR** pLine );\r
errnum_t StrT_getExistSymbols( unsigned* out, bool bCase, const TCHAR* Str, const TCHAR* Symbols, ... );\r
+errnum_t StrT_replace1( TCHAR* in_out_String, TCHAR FromCharacter, TCHAR ToCharacter,\r
+ unsigned Opt );\r
\r
\r
\r
<<< [StrT_Path] >>> \r
************************************************************************/\r
enum { StrT_LocalPathMaxSize = 4096 };\r
+enum { MAX_LOCAL_PATH = 4096 };\r
TCHAR* StrT_refFName( const TCHAR* s );\r
TCHAR* StrT_refExt( const TCHAR* s );\r
bool StrT_isAbsPath( const TCHAR* s );\r
-#define StrT_getAbsPath( out_AbsPath, AbsPathSize, StepPath, BasePath ) \\r
- StrT_getAbsPath_part( out_AbsPath, AbsPathSize, out_AbsPath, NULL, StepPath, BasePath )\r
-#define StrT_getParentAbsPath( Str, StrSize, StepPath, BasePath ) \\r
- StrT_getParentAbsPath_part( Str, StrSize, Str, NULL, StepPath, BasePath )\r
-int StrT_getAbsPath_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
+\r
+errnum_t StrT_getAbsPath_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
TCHAR** out_StrLast, const TCHAR* StepPath, const TCHAR* BasePath );\r
-int StrT_getParentAbsPath_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
+errnum_t StrT_getStepPath( TCHAR* out_StepPath, size_t StepPathSize,\r
+ const TCHAR* AbsPath, const TCHAR* BasePath );\r
+errnum_t StrT_getParentAbsPath_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
TCHAR** out_StrLast, const TCHAR* StepPath, const TCHAR* BasePath );\r
-int StrT_getBaseName_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
+errnum_t StrT_getBaseName_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
TCHAR** out_StrLast, const TCHAR* SrcPath );\r
-#define StrT_getBaseName( Str, StrSize, SrcPath ) \\r
- StrT_getBaseName_part( Str, StrSize, Str, NULL, SrcPath )\r
-int StrT_addLastOfFileName( TCHAR* out_Path, size_t PathSize,\r
+errnum_t StrT_addLastOfFileName( TCHAR* out_Path, size_t PathSize,\r
const TCHAR* BasePath, const TCHAR* AddName );\r
\r
+inline errnum_t StrT_getAbsPath( TCHAR* out_AbsPath, size_t AbsPathSize,\r
+ const TCHAR* StepPath, const TCHAR* BasePath )\r
+{\r
+ return StrT_getAbsPath_part( out_AbsPath, AbsPathSize, out_AbsPath, NULL, StepPath, BasePath );\r
+}\r
+\r
+inline errnum_t StrT_getParentAbsPath( TCHAR* Str, size_t StrSize,\r
+ const TCHAR* SrcPath, const TCHAR* BasePath )\r
+{\r
+ return StrT_getParentAbsPath_part( Str, StrSize, Str, NULL, SrcPath, BasePath );\r
+}\r
+\r
+inline errnum_t StrT_getBaseName( TCHAR* Str, size_t StrSize, const TCHAR* SrcPath )\r
+{\r
+ return StrT_getBaseName_part( Str, StrSize, Str, NULL, SrcPath );\r
+}\r
+\r
+\r
\r
/**************************************************************************\r
<<< [Strs] >>> \r
};\r
\r
void Strs_initConst( Strs* m );\r
-int Strs_init( Strs* m );\r
-int Strs_finish( Strs* m, int e );\r
-int Strs_toEmpty( Strs* m );\r
+errnum_t Strs_init( Strs* m );\r
+errnum_t Strs_finish( Strs* m, errnum_t e );\r
+errnum_t Strs_toEmpty( Strs* m );\r
bool Strs_isInited( Strs* m );\r
-int Strs_add( Strs* m, const TCHAR* Str, const TCHAR** out_pAlloc );\r
-int Strs_addBinary( Strs* m, const TCHAR* Str, const TCHAR* StrOver, const TCHAR** out_AllocStr );\r
-int Strs_freeLast( Strs* m, TCHAR* AllocStr );\r
-int Strs_toEmpty( Strs* m );\r
+errnum_t Strs_add( Strs* m, const TCHAR* Str, const TCHAR** out_pAlloc );\r
+errnum_t Strs_addBinary( Strs* m, const TCHAR* Str, const TCHAR* StrOver, const TCHAR** out_AllocStr );\r
+errnum_t Strs_freeLast( Strs* m, TCHAR* AllocStr );\r
+errnum_t Strs_toEmpty( Strs* m );\r
/* for ( Strs_forEach( Strs* m, TCHAR** in_out_Str ) ); */\r
TCHAR* Strx_getFirst( Strs* m );\r
TCHAR* Strx_getNext( Strs* m, TCHAR* Str );\r
#define Strs_getFreeSize( m ) ( (m)->MemoryOver - (char*)(m)->NextElem - sizeof(TCHAR*) )\r
#define Strs_getFreeCount( m ) ( Strs_getFreeSize( m ) / sizeof(TCHAR) )\r
#define Strs_expandCount( m, c ) ( Strs_expandSize( (m), (c) * sizeof(TCHAR) ) )\r
-int Strs_expandSize( Strs* m, size_t FreeSize );\r
-int Strs_commit( Strs* m, TCHAR* StrOver );\r
+errnum_t Strs_expandSize( Strs* m, size_t FreeSize );\r
+errnum_t Strs_commit( Strs* m, TCHAR* StrOver );\r
\r
\r
/***********************************************************************\r
Strs Chars;\r
};\r
\r
-int StrArr_init( StrArr* m );\r
-int StrArr_finish( StrArr* m, int e );\r
+errnum_t StrArr_init( StrArr* m );\r
+errnum_t StrArr_finish( StrArr* m, errnum_t e );\r
\r
-int StrArr_add( StrArr* m, const TCHAR* Str, int* out_I );\r
-int StrArr_commit( StrArr* m );\r
-int StrArr_fillTo( StrArr* m, int n, const TCHAR* Str );\r
-int StrArr_toEmpty( StrArr* m );\r
+errnum_t StrArr_add( StrArr* m, const TCHAR* Str, int* out_I );\r
+errnum_t StrArr_commit( StrArr* m );\r
+errnum_t StrArr_fillTo( StrArr* m, int n, const TCHAR* Str );\r
+errnum_t StrArr_toEmpty( StrArr* m );\r
\r
#define StrArr_initConst( m ) Set2_initConst( &(m)->Array )\r
#define StrArr_getFreeAddr( m ) Strs_getFreeAddr( &(m)->Chars )\r
/***********************************************************************\r
<<< [CSV] >>> \r
************************************************************************/\r
-int StrT_meltCSV( TCHAR* out_Str, size_t out_Str_Size, const TCHAR** pCSV );\r
-int StrArr_parseCSV( StrArr* m, const TCHAR* CSVLine );\r
+errnum_t StrT_meltCSV( TCHAR* out_Str, size_t out_Str_Size, const TCHAR** pCSV );\r
+errnum_t StrArr_parseCSV( StrArr* m, const TCHAR* CSVLine );\r
\r
\r
\r
\r
/* FileT_CallByNestFindData */ \r
typedef struct {\r
- void* CallerArgument;\r
- TCHAR* AbsPath; // abstruct path\r
- TCHAR* StepPath;\r
- TCHAR* FileName;\r
- DWORD FileAttributes;\r
+ void* CallerArgument;\r
+ TCHAR* AbsPath; // abstruct path\r
+ TCHAR* StepPath;\r
+ TCHAR* FileName;\r
+ DWORD FileAttributes;\r
} FileT_CallByNestFindData;\r
\r
int FileT_callByNestFind( const TCHAR* Path, BitField Flags, void* Obj, FuncType Callback );\r
int FileT_close( FILE* File, int e );\r
\r
\r
-\r
\r
#if __cplusplus\r
} /* End of C Symbol */ \r
/* <<< [PlatformSDK_plus/PlatformSDK_plus.h] >>> */ \r
/*=================================================================*/\r
\r
-#include <shlwapi.h> \r
-#pragma comment(lib, "shlwapi.lib")\r
-\r
-\r
- \r
int GetCommandLineUnnamed( int Index1, TCHAR* out_AParam, size_t AParamSize ); \r
int GetCommandLineNamed( const TCHAR* Name, bool bCase, TCHAR* out_Value, size_t ValueSize );\r
int GetCommandLineNamedC8( const TCHAR* Name, bool bCase, char* out_Value, size_t ValueSize );\r
************************************************************************/\r
#define USE_GLOBALS 1\r
\r
-void Globals_init_const(void);\r
+void Globals_initConst(void);\r
int Globals_init(void);\r
int Globals_finish( int e );\r
\r