Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_UTIL_CFGFILE_H__
00020 #define __CS_UTIL_CFGFILE_H__
00021
00026 #include "csextern.h"
00027 #include "csutil/array.h"
00028 #include "csutil/scf_implementation.h"
00029 #include "iutil/cfgfile.h"
00030 #include "iutil/vfs.h"
00031
00032 class csConfigNode;
00033 class csConfigIterator;
00034 struct iCommandLineParser;
00035
00039 class CS_CRYSTALSPACE_EXPORT csConfigFile :
00040 public scfImplementation1<csConfigFile, iConfigFile>
00041 {
00042 public:
00044 csConfigFile(const char *Filename = 0, iVFS* = 0);
00046 csConfigFile (iBase*);
00048 virtual ~csConfigFile();
00049
00051 virtual bool IsEmpty() const;
00052
00054 virtual const char *GetFileName () const;
00055
00060 virtual iVFS* GetVFS () const;
00061
00066 virtual void SetFileName (const char*, iVFS*);
00067
00083 virtual bool Load (const char* iFileName, iVFS* = 0, bool Merge = false,
00084 bool NewWins = true);
00085
00092 virtual void LoadFromBuffer(const char *Filedata, bool overwrite);
00093
00098 virtual bool Save ();
00099
00106 virtual bool Save (const char *iFileName, iVFS* = 0);
00107
00109 virtual void Clear();
00110
00117 virtual csPtr<iConfigIterator> Enumerate(const char *Subsection = 0);
00118
00120 virtual bool KeyExists(const char *Key) const;
00122 virtual bool SubsectionExists(const char *Subsection) const;
00123
00125 virtual int GetInt(const char *Key, int Def) const;
00127 virtual float GetFloat(const char *Key, float Def = 0.0) const;
00129 virtual const char *GetStr(const char *Key, const char *Def = "") const;
00131 virtual bool GetBool(const char *Key, bool Def = false) const;
00133 virtual csPtr<iStringArray> GetTuple(const char *Key) const;
00135 virtual const char *GetComment(const char *Key) const;
00136
00138 virtual void SetStr (const char *Key, const char *Val);
00140 virtual void SetInt (const char *Key, int Value);
00142 virtual void SetFloat (const char *Key, float Value);
00144 virtual void SetBool (const char *Key, bool Value);
00146 virtual void SetTuple (const char *Key, iStringArray* Value);
00153 virtual bool SetComment (const char *Key, const char *Text);
00155 virtual void DeleteKey(const char *Key);
00157 virtual void SetEOFComment(const char *Text);
00159 virtual const char *GetEOFComment() const;
00160
00169 virtual void ParseCommandLine (iCommandLineParser* cmdline, iVFS* vfs,
00170 bool Merge = false, bool NewWins = true);
00171 private:
00172 friend class csConfigIterator;
00173
00174
00175
00176
00177
00178
00179 csConfigNode *FirstNode, *LastNode;
00180
00181
00182
00183
00184
00185 csArray<csConfigIterator*> *Iterators;
00186
00187 char *Filename;
00188
00189 csRef<iVFS> VFS;
00190
00191
00192
00193
00194 bool Dirty;
00195
00196 char *EOFComment;
00197
00198
00199 void InitializeObject ();
00200
00201 virtual bool LoadNow(const char *Filename, iVFS *vfs, bool overwrite);
00202
00203
00204 csConfigNode *FindNode(const char *Name, bool isSubsection = false) const;
00205
00206 csConfigNode *CreateNode(const char *Name);
00207
00208 void RemoveIterator(csConfigIterator *it) const;
00209
00210 virtual bool SaveNow(const char *Filename, iVFS *vfs) const;
00211 };
00212
00213 #endif // __CS_UTIL_CFGFILE_H__