inifile.h

C:\home\SVGCats_src\src\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|