Inifile.h
[目次 | 型・クラス・構造体 | マクロ]
1|/***********************************************************************
2|* 1. <<< 初期化ファイル (IniFile) >>>
3|************************************************************************/
4|
5|#ifndef __INIFILE_H
6|#define __INIFILE_H
7|
8|#ifndef USES_PRIORITY_HEADER
9|/*[START_OF_PRIORITY_HEADER]*/
10|
11|#ifndef USES_INIFILE
12|#define USES_INIFILE
13|
14|#define STDLIBS_INCLUDE
15|#define STDLIBS_INCLUDE_STDIO_H
16|#define STDLIBS_INCLUDE_STDLIB_H
17|#define STDLIBS_INCLUDE_STRING_H
18|#define STDLIBS_INCLUDE_STDARG_H
19|
20|#endif
21|
22|/*[END_OF_PRIORITY_HEADER]*/
23|#endif /* USES_PRIORITY_HEADER */
24|
25|typedef struct _IniFile_Read IniFile_Read;
26|typedef struct _IniFile_Write IniFile_Write;
27|
28|#define IniFile_NotFoundSection (591) /* [Compone_GID:Errors_Code] */
29|#define IniFile_Err_FewBuf (592) /* [Compone_GID:Errors_Code] */
30|#define IniFile_Err_BadFormat (593) /* [Compone_GID:Errors_Code] */
31|#define IniFile_Err_FewData (594) /* [Compone_GID:Errors_Code] */
32|#define IniFile_Err_FewAttr (595) /* [Compone_GID:Errors_Code] */
33|#define IniFile_Err_BadAttr (596) /* [Compone_GID:Errors_Code] */
34|#define IniFile_Err_OtherApp (597) /* [Compone_GID:Errors_Code] */
35|#define IniFile_Err_OtherVer (598) /* [Compone_GID:Errors_Code] */
36|
37|
38|#ifdef __cplusplus
39|extern "C" {
40|#endif
41|
42|
43|
44|/*---------------------------------------------------------------------*/
45|/* 2. <<< Interface Area --------------------------------------------->>> */
46|/*---------------------------------------------------------------------*/
47|
48|
49|
50|/***********************************************************************
51|* 3. <<< [IniFile_Write] 初期化ファイル・書き込みツール >>>
52|*【補足】
53|*・この補足ファイルは、Windows の ini ファイルと完全互換です。
54|*・構造化エディタ(フリーソフト)に対応しています。
55|************************************************************************/
56|struct _IniFile_Write {
57| FILE* file;
58| bool firstSection;
59|};
60|void IniFile_Write_init( IniFile_Write*, const char* fname );
61|void IniFile_Write_finish( IniFile_Write* );
62|
63|void IniFile_Write_putSection( IniFile_Write*, const char* section );
64|void IniFile_Write_putVar( IniFile_Write*, const char* attr_name,
65| const char* types, ... );
66|void IniFile_Write_putLabel( IniFile_Write*, const char* label );
67|void IniFile_Write_putMultiLine( IniFile_Write*, const char* attr_name,
68| const char* retStr, const char* s );
69|
70|void IniFile_Write_putTypeInfo( IniFile_Write*, const char* appName,
71| int verNum );
72|
73|#ifdef USES_STRV
74| void IniFile_Write_putMultiStrV( IniFile_Write*, const char* attr_name,
75| StrV_Set* strs );
76| void IniFile_Write_putMultiStrVM( IniFile_Write*, const char* attr_name,
77| StrV_Mem* strs );
78| void IniFile_Write_putMultiStrAV( IniFile_Write*, const char* attr_name,
79| ArrX_Able* strs );
80|#endif
81|
82|void IniFile_Write_putPathes( IniFile_Write*, const char* section_name,
83| char** pathes, int nPath );
84|
85|
86|
87|/***********************************************************************
88|* 4. <<< [IniFile_Read] 初期化ファイル・読み込みツール >>>
89|************************************************************************/
90|struct _IniFile_Read {
91| FILE* file;
92| char* lineBuf;
93| int lineBuf_sizeof;
94| int string_sizeof;
95| char path[_MAX_PATH];
96|};
97|void IniFile_Read_init( IniFile_Read*, const char* fname,
98| char* lineBuf, int lineBuf_sizeof );
99|void IniFile_Read_finish( IniFile_Read* );
100|
101|void IniFile_Read_reset( IniFile_Read* );
102|void IniFile_Read_setStringSize( IniFile_Read*, int size );
103|void IniFile_Read_setSection( IniFile_Read*, const char* section );
104|long IniFile_Read_searchSection( IniFile_Read*, const char* section,
105| bool upward );
106|void IniFile_Read_searchSection2( IniFile_Read*, const char* section,
107| const char* attr, const char* type, ... );
108|
109|int IniFile_Read_getCount( IniFile_Read*, const char* attr_name );
110|long IniFile_Read_getVar( IniFile_Read*, const char* attr_name,
111| const char* types, ... );
112|int IniFile_Read_getNextCount( IniFile_Read* );
113|long IniFile_Read_getNextVar( IniFile_Read*, char* attr_name,
114| const char* types, ... );
115|void IniFile_Read_getVarByPos( IniFile_Read*, long pos,
116| const char* types, ... );
117|void IniFile_Read_getPlusVar( IniFile_Read*, const char* attr_name,
118| const char* types, ... );
119|
120|void IniFile_Read_checkTypeInfo( IniFile_Read*, const char* appName,
121| int verNum_start, int verNum_end );
122|
123|#ifdef USES_STRX
124|long IniFile_Read_getVar2( IniFile_Read*, StrX_Mem* mem,
125| const char* attr_name, const char* types, ... );
126|long IniFile_Read_getVar2s( IniFile_Read*, StrX_Mem* mem,
127| const char* attr_name, StrX_Set* set );
128|void IniFile_Read_getPlusVar2( IniFile_Read*, StrX_Mem* mem,
129| const char* attr_name, const char* types, ... );
130|#endif
131|
132|#ifdef USES_ARRX
133| #ifdef USES_STRV
134| void IniFile_Read_getVar2sv( IniFile_Read*, StrV_Mem* mem,
135| const char* attr_name, StrV_Set* set );
136| void IniFile_Read_getVar2av( IniFile_Read*, const char* attr_name,
137| ArrX_Able* set );
138| #endif
139| #ifdef USES_STRX
140| void IniFile_Read_getVars( IniFile_Read*, StrX_Mem* mem, ArrX_Buf* pmem,
141| const char* attr_name, const char* types, ArrX* arr );
142| #ifdef USES_OFFSET
143| void IniFile_Read_getVars2( IniFile_Read*, StrX_Mem* mem, ArrX_Buf* pmem,
144| const char* attr_name, const char* types, ArrX* arr, int size, ... );
145| #endif
146| #endif
147|#endif
148|
149|#ifdef USES_ARRX
150| #ifdef USES_STRX
151| void IniFile_Read_getPathes( IniFile_Read*, StrX_Mem* mem,
152| ArrX_Buf* pmem, const char* section_name, ArrX* arr );
153| void IniFile_Read_getPathesS( IniFile_Read*, StrX_Mem* mem,
154| const char* section_name, StrX_Set* set );
155| char* IniFile_Read_getMultiLine( IniFile_Read*, const char* attr_name,
156| char* retStr, char* buf, int buf_sizeof );
157| void IniFile_Read_getMultiLineM( IniFile_Read*, StrX_Mem* mem,
158| const char* attr_name, char* retStr, char** var );
159| void IniFile_Read_getMultiStr( IniFile_Read*, StrX_Mem* buf,
160| const char* attr_name, StrX_Set* set );
161| void IniFile_Read_getMultiStrM( IniFile_Read*, const char* attr_name,
162| StrX_Mem* buf );
163| #endif
164| #ifdef USES_STRV
165| void IniFile_Read_getMultiStrV( IniFile_Read*, StrV_Mem* buf,
166| const char* attr_name, StrV_Set* set );
167| void IniFile_Read_getMultiStrAV( IniFile_Read*,
168| const char* attr_name, ArrX_Able* set );
169| #endif
170|#endif
171|
172|
173|/* 内部用 */
174|char* IniFile_Read_readAttrName( IniFile_Read*, const char* attr_name );
175|void IniFile_Read_readVar( IniFile_Read*, char* buf,
176| const char* types, va_list va );
177|#ifdef USES_STRX
178| void IniFile_Read_readVar2( IniFile_Read*, char* buf,
179| StrX_Mem* mem, const char* types, va_list va );
180| void IniFile_Read_readVar2_subA( IniFile_Read*, char* vars,
181| StrX_Mem* mem, const char* types, va_list va );
182| void IniFile_Read_readVar2_subS( IniFile_Read*, char* buf,
183| char** pp, StrX_Mem* mem );
184|#endif
185|
186|#ifdef __cplusplus
187|}
188|#endif
189|
190|
191|
192|/*---------------------------------------------------------------------*/
193|/* 5. <<< Mapping Area ----------------------------------------------->>> */
194|/*---------------------------------------------------------------------*/
195|
196|
197|
198|/***********************************************************************
199|* 6. <<< [IniFile_Read_readVar2_subS] 文字列型を読み込むサブ関数(StrX_Mem使用) >>>
200|*【引数】
201|* ・char* buf; 文字列型の値('\0'で終わる)
202|* ・char** pp; 文字列ポインタを格納するアドレス
203|* ・StrX_Mem* mem; 文字列を格納する領域
204|************************************************************************/
205|#define IniFile_Read_readVar2_subS( this, buf, pp, mem ) \
206| { \
207| if ( (int)strlen( buf ) > (this)->string_sizeof - 1 ) \
208| (buf)[(this)->string_sizeof - 1] = '\0'; \
209| *(pp) = StrX_Mem_alloc( mem ); \
210| strcpy( *(pp), buf ); \
211| }
212|
213|
214|
215|#endif /* __INIFILE_H */
216|
217|