OSDN Git Service

5dc7f3a2dc6d55eddb7e5e815f98999c173db593
[chnosproject/CHNOSProject.git] / CHNOSProject / chn / chnlib.h
1 //\r
2 //  chnlib.h\r
3 //  AI003\r
4 //\r
5 //  Created by 西田 耀 on 13/01/28.\r
6 //  Copyright (c) 2013年 Hikaru Nishida. All rights reserved.\r
7 //\r
8 \r
9 #ifndef AI003_chnlib_h\r
10 #define AI003_chnlib_h\r
11 \r
12 //\r
13 //Set compile environment\r
14 //\r
15 \r
16 #define CHNLIB_MAKE_GCC_MAC\r
17 //#define CHNLIB_MAKE_BCC_WIN\r
18 \r
19 #ifdef CHNLIB_MAKE_BCC_WIN\r
20 #define DEBUG\r
21 #ifndef __FUNCTION__\r
22 #define __FUNCTION__    "Unknown"\r
23 #endif\r
24 #endif\r
25 \r
26 #define CHNLIB_DEBUG_ARGUMENTS  __FILE__, __LINE__, __FUNCTION__\r
27 \r
28 #ifdef DEBUG\r
29 //#define DEBUG_MEMORY_ALLOCATION\r
30 #endif\r
31 \r
32 //\r
33 //Define types\r
34 //\r
35 \r
36 typedef unsigned char uchar;\r
37 typedef unsigned short ushort;\r
38 typedef unsigned int uint;\r
39 \r
40 typedef struct CHNLIB_STRUCTURE_HEADER CHNLIB_StructureHeader;\r
41 struct CHNLIB_STRUCTURE_HEADER {\r
42     //ライブラリ共通構造体ヘッダ\r
43     uint signature;\r
44     uint typeid;\r
45 };\r
46 \r
47 //\r
48 //Define library values\r
49 //\r
50 \r
51 #define CHNLIB_STRUCTURE_SIGNATURE  ((uint)0x4C4E4843)  //"CHNL"(Little Endian)\r
52 \r
53 #define False   0\r
54 #define True    1\r
55 \r
56 #define CHNLIB_STRUCT_ID_Null       0\r
57 #define CHNLIB_STRUCT_ID_UIPArray   1\r
58 #define CHNLIB_STRUCT_ID_String     2\r
59 \r
60 #define CHNLIB_MAX_STRING_LENGTH        4096\r
61 \r
62 #define CHNLIB_UIPArray_INDEX_NOTFOUND  -1\r
63 \r
64 //\r
65 //Declare library functions\r
66 //\r
67 //@chnlib.c\r
68 void CHNLIB_Debug(const char format[], const char filename[], int line, const char funcname[], ...);\r
69 void CHNLIB_Debug_PrintStructureData(void *structure, uint level);\r
70 void CHNLIB_ReportError(const char format[], const char filename[], int line, const char funcname[], ...);  //("", CHNLIB_DEBUG_ARGUMENTS);\r
71 void CHNLIB_StructureHeader_Initialize(CHNLIB_StructureHeader *header, uint typeid);\r
72 uint CHNLIB_StructureHeader_GetTypeID(const void *structure);\r
73 void *CHNLIB_System_AllocateMemory_Strict(int size, const char filename[], int line, const char funcname[]);\r
74 void CHNLIB_System_FreeMemory(void *p, const char filename[], int line, const char funcname[]);\r
75 \r
76 //@chnlib00.c\r
77 typedef struct CHNLIB_UIPARRAY CHNLIB_UIPArray;\r
78 struct CHNLIB_UIP_ARRAY;\r
79 CHNLIB_UIPArray *CHNLIB_UIPArray_Initialize(void);\r
80 int CHNLIB_UIPArray_AppendLast(CHNLIB_UIPArray **array, uint data32, void *pointer);\r
81 int CHNLIB_UIPArray_AppendLast_ProtectFromDuplication(CHNLIB_UIPArray **array, uint data32, void *pointer, int (*IsDuplicated)(const void *listtag, const void *newtag));\r
82 int CHNLIB_UIPArray_RemoveByIndex(CHNLIB_UIPArray **array, int index);\r
83 void CHNLIB_UIPArray_FreeOnlyArray(CHNLIB_UIPArray **array);\r
84 void CHNLIB_UIPArray_FreeOnlyAllPointer(CHNLIB_UIPArray *array);\r
85 void CHNLIB_UIPArray_FreeOnlySelectedPointer(CHNLIB_UIPArray *array);\r
86 void CHNLIB_UIPArray_FreeAll(CHNLIB_UIPArray **array);\r
87 void CHNLIB_UIPArray_FreeSelectedAll(CHNLIB_UIPArray **array);\r
88 int CHNLIB_UIPArray_GetNumberOfDatas(const CHNLIB_UIPArray *array);\r
89 uint CHNLIB_UIPArray_GetData32ByIndex(const CHNLIB_UIPArray *array, int index);\r
90 uint CHNLIB_UIPArray_SetData32ByIndex(CHNLIB_UIPArray *array, int index, uint data32);\r
91 void *CHNLIB_UIPArray_GetPointerByIndex(const CHNLIB_UIPArray *array, int index);\r
92 int CHNLIB_UIPArray_GetIndexByData32(const CHNLIB_UIPArray *array, uint data32);\r
93 void *CHNLIB_UIPArray_GetPointerByData32(const CHNLIB_UIPArray *array, uint data32);\r
94 \r
95 //@chnlib01.c\r
96 typedef struct CHNLIB_STRING CHNLIB_String;\r
97 struct CHNLIB_STRING;\r
98 CHNLIB_String *CHNLIB_String_Initialize(const char str[]);\r
99 void CHNLIB_String_Free(CHNLIB_String *strtag);\r
100 int CHNLIB_String_SetStringFromCString(CHNLIB_String *strtag, const char s[]);\r
101 int CHNLIB_String_Print(CHNLIB_String *strtag);\r
102 const char *CHNLIB_String_GetReferencePointerOfCString(const CHNLIB_String *strtag);\r
103 CHNLIB_String *CHNLIB_String_ExtractByLength(const CHNLIB_String *strtag, int start, int len);\r
104 int CHNLIB_String_GetLength(const CHNLIB_String *strtag);\r
105 void CHNLIB_String_DeleteLastCRLF(CHNLIB_String *strtag);\r
106 int CHNLIB_String_CompareStringWithCString(const CHNLIB_String *s, const char search[]);\r
107 int CHNLIB_String_CompareString_Strict(const CHNLIB_String *s, const CHNLIB_String *search);\r
108 uint CHNLIB_String_GetCountOfContain(const CHNLIB_String *s, const CHNLIB_String *search);\r
109 //--\r
110 int CHNLIB_CString_GetByteLength(const char s[]);\r
111 void CHNLIB_CString_DeleteLastCRLF(char s[]);\r
112 char *CHNLIB_CString_ExtractByLength(const char s[], int start, int len);\r
113 int CHNLIB_CString_CompareString(const char s[], const char search[]);\r
114 int CHNLIB_CString_CompareString_Strict(const char s[], const char search[]);\r
115 int CHNLIB_CString_CompareString_LeftHand(const char s[], const char search[]);\r
116 //@chnlib02.c\r
117 int CHNLIB_String_Search_UIPArrayStringLocation(const CHNLIB_String *s, int s_start, const CHNLIB_UIPArray *list, int *location);\r
118 int CHNLIB_UIPArray_GetSeparatedStringByUIPArray(CHNLIB_UIPArray **separated, const CHNLIB_UIPArray *list, const CHNLIB_String *s);\r
119 int CHNLIB_UIPArray_GetSeparatedUTF8Character(CHNLIB_UIPArray **separated, const CHNLIB_String *s);\r
120 CHNLIB_String *CHNLIB_ReadLine(FILE *fp);\r
121 \r
122 //@chnlib03.c\r
123 void CHNLIB_Environment_SetCurrentWorkingDirectory(const char apppath[]);\r
124 const char *CHNLIB_Environment_GetFilenameFromPath(const char path[]);\r
125 \r
126 //@chnlib05.c\r
127 int CHNLIB_UTF8_GetCharacterType(char c);\r
128 int CHNLIB_UTF8_GetStringLengthByCharacter(const char s[]);\r
129 uint CHNLIB_UTF8_GetNextUnicodeOfCharacter(const char s[], const char **next);\r
130 int CHNLIB_UTF8_CompareString(const char s[], const char search[]);\r
131 int CHNLIB_UTF8_CompareString_LeftHand(const char s[], const char search[]);\r
132 int CHNLIB_UTF8_GetByteSizeFromLengthByCharacter(const char s[], int start, int end);\r
133 uint CHNLIB_UTF8_GetCountOfContain(const char s[], const char search[]);\r
134 \r
135 #endif\r