00001
00002
00003
00004
00005 #if !defined(tinycfg_H)
00006 #define tinycfg_H
00007
00008 #include <stdio.h>
00009 #include <string.h>
00010 #include <stdlib.h>
00011 #include <errno.h>
00012
00013 #define ENABLE_XML_CONFIG 1
00014
00015 #define XMLCFG_MAJOR 1
00016 #define XMLCFG_MINOR 1
00017
00021 class ConfigInterface
00022 {
00023 public:
00024 ConfigInterface() {}
00025 virtual ~ConfigInterface() {}
00026
00027 void Sync(void) { Save(); }
00028 virtual bool Load(char* fname) = 0;
00029 virtual bool Save(void) = 0;
00030
00031 virtual bool ReadBool(char* name, bool &data, const char* domain = 0) = 0;
00032 virtual bool ReadInt(char* name, int &data, const char* domain = 0) = 0;
00033 virtual bool ReadString(char* name, char *data, int max, const char* domain = 0) = 0;
00034 virtual bool ReadDouble(char* name, double &data, const char* domain = 0) = 0;
00035 virtual bool ReadHex(char* name, char *data, int length_of_item, const char* domain = 0) = 0;
00036
00037 virtual bool ReadBoolArray(char* name, bool data[], int range, const char* domain = 0) = 0;
00038 virtual bool ReadIntArray(char* name, int data[], int range, const char* domain = 0) = 0;
00039 virtual bool ReadStringArray(char* name, char* data[], int max, int range, const char* domain = 0) = 0;
00040 virtual bool ReadDoubleArray(char* name, double data[], int range, const char* domain = 0) = 0;
00041 virtual bool ReadHexArray(char* name, char* data[], int length_of_item, int range, const char* domain = 0) = 0;
00042
00043 virtual void WriteBool(char* name, bool data, const char* domain = 0) = 0;
00044 virtual void WriteInt(char* name, int data, const char* domain = 0) = 0;
00045 virtual void WriteString(char* name, char* data, const char* domain = 0) = 0;
00046 virtual void WriteDouble(char* name, double data, const char* domain = 0) = 0;
00047 virtual void WriteHex(char* name, char* data, int length_of_item, const char* domain = 0) = 0;
00048
00049 virtual void WriteBoolArray(char* name, bool data[], int range, const char* domain = 0) = 0;
00050 virtual void WriteIntArray(char* name, int data[], int range, const char* domain = 0) = 0;
00051 virtual void WriteStringArray(char* name, char *data[], int range, const char* domain = 0) = 0;
00052 virtual void WriteDoubleArray(char* name, double data[], int range, const char* domain = 0) = 0;
00053 virtual void WriteHexArray(char* name, char *data[], int length_of_item, int range, const char* domain = 0) = 0;
00054 };
00055
00148 class Config : public ConfigInterface
00149 {
00150 ConfigInterface* realcfg;
00151 public:
00152 Config(bool write = true);
00153 Config(char *, bool write = true);
00154 virtual ~Config();
00155
00156 bool IsValid(void);
00157 virtual bool Load(char* fname);
00158 virtual bool Save(void);
00159
00160 virtual bool ReadBool(char* name, bool &data, const char* domain = 0);
00161 virtual bool ReadInt(char* name, int &data, const char* domain = 0);
00162 virtual bool ReadString(char* name, char *data, int max, const char* domain = 0);
00163 virtual bool ReadDouble(char* name, double &data, const char* domain = 0);
00164 virtual bool ReadHex(char* name, char *data, int length_of_item, const char* domain = 0);
00165
00166 virtual bool ReadBoolArray(char* name, bool data[], int range, const char* domain = 0);
00167 virtual bool ReadIntArray(char* name, int data[], int range, const char* domain = 0);
00168 virtual bool ReadStringArray(char* name, char* data[], int max, int range, const char* domain = 0);
00169 virtual bool ReadDoubleArray(char* name, double data[], int range, const char* domain = 0);
00170 virtual bool ReadHexArray(char* name, char* data[], int length_of_item, int range, const char* domain = 0);
00171
00172 virtual void WriteBool(char* name, bool data, const char* domain = 0);
00173 virtual void WriteInt(char* name, int data, const char* domain = 0);
00174 virtual void WriteString(char* name, char* data, const char* domain = 0);
00175 virtual void WriteDouble(char* name, double data, const char* domain = 0);
00176 virtual void WriteHex(char* name, char* data, int length_of_item, const char* domain = 0);
00177
00178 virtual void WriteBoolArray(char* name, bool data[], int range, const char* domain = 0);
00179 virtual void WriteIntArray(char* name, int data[], int range, const char* domain = 0);
00180 virtual void WriteStringArray(char* name, char *data[], int range, const char* domain = 0);
00181 virtual void WriteDoubleArray(char* name, double data[], int range, const char* domain = 0);
00182 virtual void WriteHexArray(char* name, char *data[], int length_of_item, int range, const char* domain = 0);
00183 };
00184
00189 #ifdef __BORLANDC__
00190 #ifdef _WIN32
00191 #pragma link "tinycfg.lib"
00192 #else
00193 #pragma link "tinycfg.a"
00194 #endif
00195 #endif
00196
00197 #endif // Unit1_H