tinifile.h 3.28 KB
/**
    @file   tinifile.h
    @date   2009-04-09
    @author 장길석 jwjwmx@gmail.com
    @brief  Delphi에서 제공하는 TIniFile을 생성한다.
    @todo
    @bug
    @remark
    @warning
        - 저작권    에프에이리눅스(주)
        - 외부공개 금지
*/
#ifndef __TINI_FILE__
#define __TINI_FILE__

/// 에러 없음
#define INIERR_NONE                 0
/// 메모리 부족
#define INIERR_OUT_OF_MEMORY        1
/// 파일 이름 지정 오류
#define INIERR_FILENAME_FAIL        2
/// 지정된 자료가 없음
#define INIERR_NO_DATA              3
/// IniFile이 없음
#define INIERR_NO_FILE              4
/// IniFile 열기 실패
#define INIERR_ACCESS_FAIL          5
/// 섹션 리스트 생성 실패
#define INIERR_CREATE_SECTION_FAIL  6
/// 구별자 정보를 위한 메모리 확보를 실패
#define INIERR_CREATE_IDENTIFY_FAIL 7
/// 구별자의 문자열 정보를 저장하기 위한 메모리 확보에 실패
#define INIERR_READ_IDENTIFY_FAIL   8
/// NULL 객체
#define INIERR_NULL_POINTER         9

/// INI 에서 사용하는 TRUE
#define INI_TRUE                    1
/// INI 에서 사용하는 FALSE
#define INI_FALSE                   0

/// ini 파일을 처리하는 객체를 위한 구조체
typedef struct
{   /// IniFile 정보 저장 파일이름
    char       *filename;
    /// INI 정보가 변경되었는지의 여부
    int         is_changed;
    /// 모든 섹션의 문자열
    tstrlist   *lst_sections;
} inifile_t;

extern int          ini_error_code;

extern char        *ini_error_string( void);
extern int          ini_print_error( char *remark);
extern inifile_t   *ini_create( char *filename);
extern int          ini_flush( inifile_t *inifile);
extern void         ini_free( inifile_t *inifile);
extern int          ini_save_to_file  ( inifile_t *inifile, char *filename);
extern tstrlist    *ini_read_sections ( inifile_t *inifile);
extern tstrlist    *ini_read_section  ( inifile_t *inifile, char *str_section);
extern char *       ini_read_string   ( inifile_t *inifile, char *str_section, char *str_identify, char  *default_value);
extern int          ini_read_integer  ( inifile_t *inifile, char *str_section, char *str_identify, int    default_value);
extern double       ini_read_real     ( inifile_t *inifile, char *str_section, char *str_identify, double default_value);
extern int          ini_read_bool     ( inifile_t *inifile, char *str_section, char *str_identify, int    default_value);
extern int          ini_write_string  ( inifile_t *inifile, char *str_section, char *str_identify, char  *value);
extern int          ini_write_integer ( inifile_t *inifile, char *str_section, char *str_identify, int    value);
extern int          ini_write_real    ( inifile_t *inifile, char *str_section, char *str_identify, double value);
extern int          ini_write_bool    ( inifile_t *inifile, char *str_section, char *str_identify, int    value);
extern void         ini_remove_section( inifile_t *inifile, char *str_section);

extern char         ini_read_char     ( inifile_t *inifile, char *str_section, char *str_identify, char   default_value);
extern int          ini_write_char    ( inifile_t *inifile, char *str_section, char *str_identify, char   value);


#endif // __TINI_FILE__