00001
00002
00003
00004
00005 #ifndef INISECTION_H_INCLUDED
00006 #define INISECTION_H_INCLUDED
00007
00008 #include "typedefs.h"
00009
00011
00012
00013
00014 class INISection
00015 {
00016 friend class INIFile;
00017 private:
00018
00020 miniini_private::c * Name;
00022 miniini_private::ui Length;
00024 miniini_private::c * * Tags;
00025
00028 static miniini_private::ui temptagscap;
00030 static miniini_private::c * * temptags;
00032 static miniini_private::ui tagcap;
00034 static miniini_private::c * tagbuf;
00035
00036 public:
00037
00039 const char * GetName() const;
00040
00042
00051 bool ReadString(const char * const name, const char * & out) const;
00052
00054
00060 bool ReadInt(const char * const name, int & out) const;
00061
00063
00069 bool ReadFloat(const char * const name, float & out) const;
00070
00072
00078 bool ReadBool(const char * const name, bool & out) const;
00079
00081
00095 unsigned ReadStrings(const char * const name, const char * * out,
00096 const unsigned cap) const;
00097
00099
00110 unsigned ReadInts(const char * const name, int * out,
00111 const unsigned cap) const;
00112
00114
00125 unsigned ReadFloats(const char * const name, float * out,
00126 const unsigned cap) const;
00127
00129
00140 unsigned ReadBools(const char * const name, bool * out,
00141 const unsigned cap) const;
00142
00144 unsigned GetLength() const;
00145
00146 private:
00147
00149 INISection();
00150
00152 ~INISection();
00153
00155
00156
00157
00158
00159
00160
00161
00162
00163 bool Init(const miniini_private::c * const sectionname,
00164 miniini_private::c * * const outlinetoken);
00165
00166 INISection(const INISection &);
00167
00168 void operator = (const INISection &);
00169
00171 static void InitTempData()
00172 {
00173 temptagscap = 8;
00174 temptags = new miniini_private::c * [temptagscap];
00175 tagcap = 64;
00176 tagbuf = new miniini_private::c [tagcap];
00177 }
00178
00180 static void DestroyTempData()
00181 {
00182 temptagscap = 0;
00183 delete [] temptags;
00184 tagcap = 0;
00185 delete [] tagbuf;
00186 }
00187 };
00188
00189 #endif