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_UNKNOWN_DATA_TYPE = E_CATEGORY_COMMON | 0x08 }; /* 1032 */\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_EXIT_TEST = E_CATEGORY_COMMON | 0xE7 }; /* 1255 */\r
enum { E_FIFO_OVER = E_CATEGORY_COMMON | 0xF0 }; /* 1264 */\r
\r
+enum { NOT_FOUND_INDEX = -1 };\r
\r
\r
/*=================================================================*/\r
\r
#include <direct.h> \r
\r
+#include <malloc.h> \r
+ \r
/*=================================================================*/\r
/* <<< [CRT_plus_1/CRT_plus_1.h] >>> */ \r
/*=================================================================*/\r
typedef unsigned int uint32_t; /* For 32bit compiler */\r
typedef unsigned short uint16_t;\r
typedef unsigned char uint8_t;\r
+typedef unsigned char byte_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
\r
\r
\r
+/***********************************************************************\r
+ <<< [PointerType_plus] >>> \r
+************************************************************************/\r
+inline void PointerType_plus( const void* in_out_Element, int PlusMinusByte )\r
+{\r
+ *(int8_t**) in_out_Element = *(int8_t**) in_out_Element + PlusMinusByte;\r
+}\r
+\r
+\r
+ \r
+/***********************************************************************\r
+ <<< [PointerType_diff] >>> \r
+************************************************************************/\r
+inline ptrdiff_t PointerType_diff( const void* PointerA, const void* PointerB )\r
+{\r
+ return (uintptr_t) PointerA - (uintptr_t) PointerB;\r
+}\r
+\r
+\r
+ \r
/*=================================================================*/\r
/* <<< [Error4_Inline/Error4_Inline.h] >>> */ \r
/*=================================================================*/\r
};\r
\r
#define Set2_initConst( m ) ( (m)->First = NULL, (m)->Next = NULL )\r
-int Set2_init( Set2* m, int FirstSize );\r
-int Set2_finish( Set2* m, int e );\r
+errnum_t Set2_init( Set2* m, int FirstSize );\r
+errnum_t Set2_finish( Set2* m, errnum_t e );\r
#define Set2_isInited( m ) ( (m)->First != NULL )\r
\r
+#define Set2_allocate( m, pp ) \\r
+ Set2_alloc_imp( m, (void*)(pp), sizeof(**(pp)) )\r
+\r
#define Set2_alloc( m, pp, type ) \\r
Set2_alloc_imp( m, (void*)(pp), sizeof(type) )\r
\r
-int Set2_alloc_imp( Set2* m, void* pm, size_t size );\r
+errnum_t Set2_alloc_imp( Set2* m, void* pm, size_t size );\r
\r
#define Set2_push( m, pp, type ) \\r
Set2_alloc_imp( m, (void*)(pp), sizeof(type) )\r
#define Set2_pop( m, pp, type ) \\r
Set2_pop_imp( m, (void*)(pp), sizeof(type) )\r
\r
-int Set2_pop_imp( Set2* m, void* pp, size_t size );\r
+errnum_t Set2_pop_imp( Set2* m, void* pp, size_t size );\r
+\r
+#define Set2_free( m, pp, e ) \\r
+ Set2_free_imp( m, pp, sizeof(**(pp)), e )\r
+errnum_t Set2_free_imp( Set2* self, void* in_PointerOfPointer, size_t in_Size_ofElement, errnum_t e );\r
\r
#define Set2_freeLast( m, p, type, e ) \\r
( ((char*)(m)->Next - sizeof(type) == (char*)(p)) ? \\r
\r
#define Set2_expandIfOverByOffset( m, Size ) \\r
Set2_expandIfOverByAddr( m, (char*)(m)->First + (Size) )\r
-int Set2_expandIfOverByAddr_imp( Set2* m, void* OverAddrBasedOnNowFirst );\r
+errnum_t Set2_expandIfOverByAddr_imp( Set2* m, void* OverAddrBasedOnNowFirst );\r
\r
#define Set2_allocMulti( m, out_pElem, 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
+errnum_t 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
}\r
\r
\r
+#define Set2_getArray( self, out_Array, out_Count ) \\r
+ ( ( *(void**)(out_Array) = (self)->First, \\r
+ *(out_Count) = ( (byte_t*) (self)->Next - (byte_t*) (self)->First ) / sizeof(**(out_Array))), 0 )\r
+\r
+#define Set2_refer( m, iElem, out_pElem ) \\r
+ Set2_ref_imp( m, iElem, out_pElem, sizeof(**(out_pElem)) )\r
+\r
#define Set2_ref( m, iElem, out_pElem, 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
+errnum_t Set2_ref_imp( Set2* m, int iElem, void* out_pElem, size_t ElemSize );\r
+\r
+#define Set2_isEmpty( m ) \\r
+ ( (m)->Next == (m)->First )\r
\r
#define Set2_getCount( m, Type ) \\r
- ( (Type*)(m)->Next - (Type*)(m)->First )\r
+ ( ( (byte_t*)(m)->Next - (byte_t*)(m)->First ) / sizeof(Type) )\r
+\r
+#define Set2_getCountMax( m, Type ) \\r
+ ( ( (byte_t*)(m)->Over - (byte_t*)(m)->First ) / sizeof(Type) )\r
\r
#define Set2_checkPtrInArr( m, p ) \\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
+errnum_t Set2_separate( Set2* m, int NextSize, void** allocate_Array );\r
\r
#ifdef _DEBUG\r
void Set2_setDebug( Set2* m, void* PointerOfDebugArray );\r
\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_chr( const TCHAR* String, TCHAR Key );\r
TCHAR* StrT_chrs( const TCHAR* s, const TCHAR* keys );\r
TCHAR* StrT_rstr( const TCHAR* String, const TCHAR* SearchStart, const TCHAR* Keyword,\r
void* NullConfig );\r
+TCHAR* StrT_chrNext( const TCHAR* in_Start, TCHAR in_KeyCharactor );\r
TCHAR* StrT_skip( const TCHAR* s, const TCHAR* keys );\r
TCHAR* StrT_rskip( const TCHAR* String, const TCHAR* SearchStart, const TCHAR* Keys,\r
void* NullConfig );\r
bool StrT_isCIdentifier( TCHAR Character );\r
TCHAR* StrT_searchOverOfCIdentifier( const TCHAR* Text );\r
+TCHAR* StrT_searchOverOfIdiom( const TCHAR* Text );\r
int StrT_cmp_part( const TCHAR* StringA_Start, const TCHAR* StringA_Over,\r
const TCHAR* StringB );\r
+int StrT_cmp_i_part( const TCHAR* StringA_Start, const TCHAR* StringA_Over,\r
+ const TCHAR* StringB );\r
int StrT_cmp_part2( const TCHAR* StringA_Start, const TCHAR* StringA_Over,\r
const TCHAR* StringB_Start, const TCHAR* StringB_Over );\r
#define TwoChar8( Character1, Character2 ) \\r
#define MallocAndCopyString_char MallocAndCopyString\r
#endif\r
\r
+errnum_t StrHS_insert( TCHAR** in_out_WholeString,\r
+ int in_TargetIndexInWholeString, int* out_NextWholeInWholeString,\r
+ const TCHAR* in_InsertString );\r
+errnum_t StrHS_printf( TCHAR** in_out_String, const TCHAR* in_Format, ... );\r
+errnum_t StrHS_printfV( TCHAR** in_out_String, const TCHAR* in_Format, va_list in_VaList );\r
+errnum_t StrHS_printfPart( TCHAR** in_out_String,\r
+ int in_IndexInString, int* out_NextIndexInString,\r
+ const TCHAR* in_Format, ... );\r
+errnum_t StrHS_printfPartV( TCHAR** in_out_String,\r
+ int in_IndexInString, int* out_NextIndexInString,\r
+ const TCHAR* in_Format, va_list in_VaList );\r
+\r
+\r
\r
/***********************************************************************\r
<<< [StrT_Edit] >>> \r
************************************************************************/\r
+errnum_t StrT_cutPart( TCHAR* in_out_String, TCHAR* in_StartOfCut, TCHAR* in_OverOfCut );\r
errnum_t StrT_trim( TCHAR* out_Str, size_t out_Str_Size, const TCHAR* in_Str );\r
errnum_t StrT_cutLastOf( TCHAR* in_out_Str, TCHAR Charactor );\r
errnum_t StrT_cutLineComment( TCHAR* out_Str, size_t out_Str_Size, const TCHAR* in_Str, const TCHAR* CommentSign );\r
+errnum_t StrT_insert( TCHAR* in_out_WholeString, size_t in_MaxSize_of_WholeString,\r
+ TCHAR* in_out_Target_in_WholeString, TCHAR** out_NextTarget_in_WholeString,\r
+ const TCHAR* in_InsertString );\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
enum { MAX_LOCAL_PATH = 4096 };\r
TCHAR* StrT_refFName( const TCHAR* s );\r
TCHAR* StrT_refExt( const TCHAR* s );\r
+void StrT_cutFragmentInPath( TCHAR* in_out_Path );\r
bool StrT_isFullPath( const TCHAR* s );\r
\r
errnum_t StrT_getFullPath_part( TCHAR* Str, size_t StrSize, TCHAR* StrStart,\r
TCHAR** out_StrLast, const TCHAR* SrcPath );\r
errnum_t StrT_addLastOfFileName( TCHAR* out_Path, size_t PathSize,\r
const TCHAR* BasePath, const TCHAR* AddName );\r
+errnum_t StrT_encodeToValidPath( TCHAR* out_Path, size_t in_OutPathSize, const TCHAR* in_Path, bool in_IsName );\r
\r
inline errnum_t StrT_getFullPath( TCHAR* out_FullPath, size_t FullPathSize,\r
const TCHAR* StepPath, const TCHAR* BasePath )\r
***************************************************************************/\r
typedef struct _Strs Strs;\r
struct _Strs {\r
- char* MemoryAddress; /* first memory = [ TCHAR* FirstStr | elem[] ], other memory = [ elem[] ] */\r
- char* MemoryOver;\r
- char* NextElem; /* elem = [ TCHAR* NextStr | TCHAR[] ] */\r
- TCHAR** PointerToNextStrInPrevElem; /* first = &FirstStr, other = &NextStr */\r
- TCHAR** Prev_PointerToNextStrInPrevElem;\r
+ byte_t* MemoryAddress; /* first memory = [ TCHAR* FirstStr | elem[] ], other memory = [ elem[] ] */\r
+ byte_t* MemoryOver;\r
+ byte_t* NextElem; /* elem = [ TCHAR* NextStr | TCHAR[] ] */\r
+ TCHAR** PointerToNextStrInPrevElem; /* first = &FirstStr, other = &NextStr */\r
+ TCHAR** Prev_PointerToNextStrInPrevElem;\r
\r
Strs* FirstOfStrs;\r
Strs* NextStrs;\r
( *( (TCHAR**)(p) - 1 ) )\r
\r
#define Strs_getFreeAddr( m ) ( (TCHAR*)( (m)->NextElem + sizeof(TCHAR*) ) )\r
-#define Strs_getFreeSize( m ) ( (m)->MemoryOver - (char*)(m)->NextElem - sizeof(TCHAR*) )\r
+#define Strs_getFreeSize( m ) ( (m)->MemoryOver - (byte_t*)(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
errnum_t Strs_expandSize( Strs* m, size_t FreeSize );\r
errnum_t Strs_commit( Strs* m, TCHAR* StrOver );\r
+errnum_t Strs_allocateArray( Strs* self, TCHAR*** out_PointerArray, int* out_Count );\r
+\r
\r
\r
/***********************************************************************\r
\r
#endif\r
\r
+#ifndef NDEBUG\r
+ #define ERR2_ENABLE_ERROR_LOG 1\r
+#else\r
+ #define ERR2_ENABLE_ERROR_LOG 0\r
+#endif\r
+\r
/*[dll_global_g_Error]*/\r
#ifndef dll_global_g_Error\r
#define dll_global_g_Error\r
<<< [stdio] >>> \r
************************************************************************/\r
void Error4_showToStdErr( int err_num );\r
+void Error4_showToStdIO( FILE* out, int err_num );\r
\r
\r
\r
\r
\r
\r
+/***********************************************************************\r
+* Class: ViewOfFileClass\r
+************************************************************************/\r
+typedef struct _ViewOfFileClass ViewOfFileClass;\r
+struct _ViewOfFileClass {\r
+ byte_t* Data;\r
+ size_t Size;\r
+ HANDLE File;\r
+ HANDLE Memory;\r
+};\r
+void ViewOfFileClass_initConst( ViewOfFileClass* self );\r
+errnum_t ViewOfFileClass_initializeFromBinaryFile( ViewOfFileClass* self, const TCHAR* Path );\r
+errnum_t ViewOfFileClass_finalize( ViewOfFileClass* self, errnum_t e );\r
+\r
+\r
+ \r
#if __cplusplus\r
} /* End of C Symbol */ \r
#endif\r