OSDN Git Service

Version 4.01
[vbslib/main.git] / _src / Test / tools / feq / clib.h
index e2d0c19..2bd223b 100644 (file)
@@ -20,6 +20,8 @@
                ( *(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
@@ -95,14 +101,24 @@ typedef  char    bool_t;  /* this is not C99 */
 \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
@@ -135,6 +151,42 @@ typedef  int (*FinishFuncType)( void* m, int e );
 \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
@@ -147,38 +199,54 @@ typedef  int (*FinishFuncType)( void* m, int e );
   <<< [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
@@ -189,13 +257,15 @@ enum { E_ExitTest        = 0x4E7 }; /* 1255 */
 #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
@@ -210,7 +280,7 @@ enum { E_ExitTest        = 0x4E7 }; /* 1255 */
        #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
@@ -218,29 +288,33 @@ enum { E_ExitTest        = 0x4E7 }; /* 1255 */
 \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
@@ -251,6 +325,7 @@ enum { E_ExitTest        = 0x4E7 }; /* 1255 */
 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
@@ -303,9 +378,42 @@ int  Error4_raiseErrno(void);
 #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
@@ -343,50 +451,70 @@ inline void  SetIsCheckArg( bool IsCheckArg )  { g_IsCheckArg = IsCheckArg; }
   <<< [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
@@ -398,9 +526,9 @@ dll_global_g_DebugBreakCount extern  int  g_DebugBreakCount;
  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
@@ -409,11 +537,11 @@ int  vswprintf_r( wchar_t* s, size_t s_size, const wchar_t* format, va_list va )
   #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
@@ -428,7 +556,7 @@ int  stprintf_part_r( TCHAR* s, size_t s_size, TCHAR* s_start, TCHAR** p_s_last,
 #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
@@ -438,9 +566,13 @@ int  stprintf_part_r( TCHAR* s, size_t s_size, TCHAR* s_start, TCHAR** p_s_last,
 ************************************************************************/\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
@@ -449,45 +581,54 @@ int  Set2_finish( Set2* m, int e );
 #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
@@ -500,15 +641,29 @@ int  Set2_separate( Set2* m, int NextSize, void** allocate_Array );
  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
@@ -519,6 +674,8 @@ errnum_t  StrT_cutLastOf( TCHAR* in_out_Str, TCHAR Charactor );
 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
@@ -526,24 +683,40 @@ errnum_t  StrT_getExistSymbols( unsigned* out, bool bCase, const TCHAR* Str, con
   <<< [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
@@ -561,14 +734,14 @@ struct _Strs {
 };\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
@@ -592,8 +765,8 @@ TCHAR*  Strx_getNext( Strs* m, TCHAR* Str );
 #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
@@ -605,13 +778,13 @@ struct _StrArr {
        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
@@ -627,8 +800,8 @@ int  StrArr_toEmpty( StrArr* m );
 /***********************************************************************\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
@@ -657,11 +830,11 @@ int   FileT_isSameBinaryFile( const TCHAR* PathA, const TCHAR* PathB, int Flags,
  \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
@@ -678,7 +851,6 @@ int  FileT_openForRead( FILE** out_pFile, const TCHAR* path );
 int  FileT_close( FILE* File, int e );\r
 \r
 \r
-\r
  \r
 #if  __cplusplus\r
  }  /* End of C Symbol */ \r
@@ -711,11 +883,6 @@ int  Locale_isInited(void);
 /* <<< [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
@@ -742,7 +909,7 @@ bool GetCommandLineExist( const TCHAR* Name, bool bCase );
 ************************************************************************/\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