00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef PARSECFG_H_INCLUDED
00026 #define PARSECFG_H_INCLUDED
00027
00028
00029 #undef PARSECFG_VERSION
00030 #define PARSECFG_VERSION "3.6.7"
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036
00037
00038 typedef enum {
00039 CFG_NO_ERROR,
00040 CFG_OPEN_FAIL,
00041 CFG_CREATE_FAIL,
00042 CFG_SYNTAX_ERROR,
00043 CFG_WRONG_PARAMETER,
00044 CFG_INTERNAL_ERROR,
00045 CFG_INVALID_NUMBER,
00046 CFG_OUT_OF_RANGE,
00047 CFG_MEM_ALLOC_FAIL,
00048 CFG_BOOL_ERROR,
00049 CFG_USED_SECTION,
00050 CFG_NO_CLOSING_BRACE,
00051 CFG_JUST_RETURN_WITHOUT_MSG
00052 } cfgErrorCode;
00053
00054
00055 typedef enum {
00056 CFG_SIMPLE,
00057 CFG_INI
00058 } cfgFileType;
00059
00060
00061 typedef enum {
00062 CFG_END,
00063 CFG_BOOL,
00064 CFG_STRING,
00065 CFG_INT,
00066 CFG_UINT,
00067 CFG_LONG,
00068 CFG_ULONG,
00069 CFG_STRING_LIST,
00070 CFG_FLOAT,
00071 CFG_DOUBLE
00072 } cfgValueType;
00073
00074 typedef enum {
00075 CFG_PARAMETER,
00076 CFG_VALUE,
00077 CFG_SECTION
00078 } cfgKeywordValue;
00079
00080 typedef enum {
00081 CFG_NO_QUOTE,
00082 CFG_SINGLE_QUOTE,
00083 CFG_DOUBLE_QUOTE
00084 } cfgQuote;
00085
00086
00087 typedef struct {
00088 char *parameterName;
00089 cfgValueType type;
00090 void *value;
00091 } cfgStruct;
00092
00093 typedef struct cfgList_tag {
00094 char *str;
00095 struct cfgList_tag *next;
00096 } cfgList;
00097
00098
00099
00100
00101
00102 void cfgSetFatalFunc(void (*f) (cfgErrorCode, const char *, int, const char *));
00103 int cfgParse(const char *file, cfgStruct cfg[], cfgFileType type);
00104 int cfgDump(const char *file, cfgStruct cfg[], cfgFileType type, int max_section);
00105 int fetchVarFromCfgFile(const char *file, char *parameter_name, void *result_value, cfgValueType value_type, cfgFileType file_type, int section_num, const char *section_name);
00106 int cfgSectionNameToNumber(const char *name);
00107 char *cfgSectionNumberToName(int num);
00108 int cfgAllocForNewSection(cfgStruct cfg[], const char *name);
00109 int cfgStoreValue(cfgStruct cfg[], const char *parameter, const char *value, cfgFileType type, int section);
00110 void printconfdata(cfgStruct *dat, cfgFileType type);
00111
00112 #ifdef __cplusplus
00113 }
00114 #endif
00115
00116 #endif