50 KKStrConstPtr
Name ()
const {
return &name;}
51 KKStrConstPtr
Value ()
const {
return &value;}
72 for (x = 0; x < sl.size (); x++)
74 SettingPtr setting = sl.IdxToPtr (x);
75 PushOnBack (
new Configuration::Setting (*setting));
82 SettingList::const_iterator idx;
83 for (idx = begin (); idx != end (); ++idx)
84 memoryConsumedEstimated += (*idx)->MemoryConsumedEstimated ();
85 return memoryConsumedEstimated;
93 for (idx = 0; idx < qSize; idx++)
95 SettingPtr setting = IdxToPtr (idx);
107 for (idx = begin (); idx != end (); idx++)
119 PushOnBack (setting);
128 PushOnBack (
new Setting (_name, _value, _lineNum));
147 lineNum (cs.lineNum),
155 KKStrConstPtr
Name () {
return &name;}
159 return sizeof (lineNum) + name.MemoryConsumedEstimated () + settings.MemoryConsumedEstimated ();
168 if (settingNum >= (kkint32)settings.size ())
170 return settings[settingNum].Name ();
175 if (settingNum >= (kkint32)settings.size ())
177 lineNum = settings[settingNum].LineNum ();
178 return settings[settingNum].Value ();
183 KKStrConstPtr& value,
187 SettingPtr setting = settings.IdxToPtr (settingNum);
208 settings.AddSetting (_name, _value, _lineNum);
213 SettingPtr setting = settings.LookUp (_name);
243 ConfSectionList::const_iterator idx;
244 for (idx = begin (); idx != end (); ++idx)
245 memoryConsumedEstimated += (*idx)->MemoryConsumedEstimated ();
246 return memoryConsumedEstimated;
252 ConfSectionPtr tempSection = NULL;
253 ConfSectionPtr section = NULL;
254 ConfSectionList::const_iterator idx;
255 for (idx = begin (); idx != end (); ++idx)
260 section = tempSection;
271 PushOnBack (section);
279 PushOnBack (
new ConfSection (_name, _lineNum));
290 fileName
(_fileName
),
293 formatErrorsLineNums (),
306 formatErrorsLineNums (),
316 curSectionName
(c.curSectionName
),
317 fileName
(c.fileName
),
318 formatGood (c.formatGood),
319 formatErrors
(c.formatErrors
),
320 formatErrorsLineNums (c.formatErrorsLineNums),
327 for (x = 0; x < sections->QueueSize (); x++)
329 const ConfSectionPtr cs = sections->IdxToPtr (x);
345 kkint32 memoryConsumedEstimated =
sizeof (Configuration)
346 + curSectionName.MemoryConsumedEstimated ()
347 + fileName.MemoryConsumedEstimated ()
348 + (kkint32)formatErrors.size () * 100
349 + (kkint32)formatErrorsLineNums.size () *
sizeof (kkint32);
354 return memoryConsumedEstimated;
366 while ((x < (len - 1)) && (!found))
368 if ((line
[x] ==
'/') &&
369 (line
[x + 1
] ==
'/'))
390 <<
"Num" <<
"\t" <<
"LineNum" <<
"\t" <<
"Description" << endl;
392 for (
kkuint32 idx = 0; idx < formatErrors.size (); ++idx)
394 o << idx <<
"\t" << formatErrorsLineNums[idx] <<
"\t" << formatErrors[idx] << endl;
405 fileName
= _fileName;
413 log.Level (10) <<
"Configuration::LoadFile: " << fileName << endl;
419 log.Level (-1) << endl
420 <<
"Configuration::LoadFile ***ERROR*** File-Name is blank" << endl
430 log.Level (-1) << endl
431 <<
"Configuration::LoadFile ***ERROR*** Opening File: " << fileName << endl
442 ConfSectionPtr curSection = NULL;
444 while (fgets (buff,
sizeof (buff), inFile))
451 StripOutAnyComments (line);
453 log.Level (70) << line << endl;
455 StripOutAnyComments (line);
462 else if (line.FirstChar () ==
'[')
466 if (line.LastChar () ==
']')
468 curSectionName = line.SubStrPart (1, line.Len () - 2);
469 curSectionName.TrimLeft ();
470 curSectionName.TrimRight ();
471 curSectionName.Upper ();
473 curSection =
new ConfSection (curSectionName, lastLineNum);
474 sections->AddConfSection (curSection);
475 log.Level (30) <<
"LoadFile SectionName[" << curSectionName <<
"]." << endl;
479 log.Level (-1) << endl
480 <<
"Configuration::LoadFile ***ERROR*** LineNumber[" << lastLineNum <<
"] Improper Section Name[" << line <<
"]." << endl
490 log.Level (-1) << endl
491 <<
"Configuration::LoadFile ***ERROR*** Format Error LineNumber[" << lastLineNum <<
"]" << endl
492 <<
" No Section Defined." << endl
497 curSectionName =
"GLOBAL";
498 curSection =
new ConfSection (curSectionName, lastLineNum);
499 sections->AddConfSection (curSection);
502 kkint32 equalIdx = line.LocateCharacter (
'=');
507 log.Level (-1) << endl
508 <<
"Configuration::LoadFile ***ERROR*** LineNumber[" << lastLineNum <<
"] Improperly Formated Line[" << line <<
"]." 515 KKStr settingName (line.SubStrPart (0, equalIdx - 1));
516 settingName.TrimLeft ();
517 settingName.TrimRight ();
518 settingName.Upper ();
520 KKStr settingValue (line.SubStrPart (equalIdx + 1));
521 settingValue.TrimLeft ();
522 settingValue.TrimRight ();
524 log.Level (30) <<
"LoadFile SectionName[" << curSectionName <<
"], " 525 <<
"Setting[" << settingName <<
"], Value[" << settingValue <<
"]." 528 curSection->AddSetting (settingName, settingValue, lastLineNum);
543 return sections->QueueSize ();
550 ConfSectionPtr section = sections
->LookUp (sectionName
);
563 if ((sectionNum < 0) || (sectionNum >= sections->QueueSize ()))
566 return sections->IdxToPtr (sectionNum) ->NumOfSettings ();
576 ConfSectionPtr section = sections
->LookUp (sectionName
);
577 return (section != NULL);
584 ConfSectionPtr section = sections->IdxToPtr (sectionNum);
599 while (idx < sections->size ())
601 if (sections->IdxToPtr(idx)->Name ()->EqualIgnoreCase (sectionName))
612 ConfSectionPtr section = sections->IdxToPtr (sectionNum);
626 ConfSectionPtr section = sections
->LookUp (sectionName
);
640 if ((sectionNum < 0) || (sectionNum >= sections->QueueSize ()))
643 if ((settingNum < 0) || (settingNum >= (*sections)[sectionNum].NumOfSettings ()))
647 return sections->IdxToPtr (sectionNum)->SettingName (settingNum);
653 const KKStr& settingName,
658 KKStrConstPtr result = NULL;
659 ConfSectionPtr section = sections->IdxToPtr (sectionNum);
673 const KKStr& settingName,
678 KKStrConstPtr result = NULL;
679 ConfSectionPtr section = sections->IdxToPtr (sectionNum);
706 if ((sectionNum < 0) || (sectionNum >= sections->QueueSize ()))
709 if ((settingNum < 0) || (settingNum >= (*sections)[sectionNum].NumOfSettings ()))
713 return sections->IdxToPtr (sectionNum)->SettingValue (settingNum, lineNum);
752 KKStrConstPtr& value,
756 ConfSectionPtr section = sections
->LookUp (sectionName
);
776 formatErrors.push_back (error);
777 formatErrorsLineNums.push_back (lineNum);
785 formatErrors.clear ();
786 formatErrorsLineNums.clear ();
794 for (
kkuint32 i = 0; i < formatErrors.size (); i++)
796 KKStr lineNumStr =
" ";
797 if (i < formatErrorsLineNums.size ())
798 lineNumStr = StrFormatInt (formatErrorsLineNums[i],
"0000");
799 errorMsgs.push_back (lineNumStr +
":" + formatErrors[i]);
void AddConfSection(const KKStr &_name, kkint32 _lineNum)
kkint32 SectionNum(const KKB::KKStr §ionName) const
KKStrConstPtr SettingName(kkint32 settingNum) const
KKStrConstPtr LookUpValue(const KKStr &_name, kkint32 &lineNum)
kkint32 NumOfSettings(kkint32 sectionNum) const
Returns number of settings for the specified section,.
void GetSettings(kkint32 settingNum, KKStrConstPtr &name, KKStrConstPtr &value, kkint32 &lineNum)
kkint32 MemoryConsumedEstimated() const
KKStrConstPtr SectionName(kkint32 sectionNum) const
Returns the name of the section for specified index, if index not defined will return NULL...
bool SectionDefined(const KKB::KKStr §ionName) const
Returns true if the section is defined.
KKStrConstPtr SettingValue(kkint32 settingNum, kkint32 &lineNum) const
Setting(const Configuration::Setting &s)
VectorKKStr FormatErrorsWithLineNumbers() const
ConfSectionPtr LookUp(const KKStr &_name)
virtual void Load(const KKB::KKStr &_fileName, RunLog &_log)
KKStr & operator=(const char *src)
KKStrConstPtr SettingValue(kkint32 sectionNum, const KKB::KKStr &settingName, kkint32 &lineNum) const
kkint32 MemoryConsumedEstimated() const
virtual kkint32 MemoryConsumedEstimated() const
bool operator==(const char *rtStr) const
ConfSection(const KKStr &_name, kkint32 _lineNum)
KKStrConstPtr SettingName(kkint32 sectionNum, kkint32 settingNum) const
bool EqualIgnoreCase(const KKStr &s2) const
unsigned __int32 kkuint32
KKStrConstPtr SettingValue(kkint32 sectionNum, kkint32 settingNum, kkint32 &lineNum) const
void AddConfSection(ConfSectionPtr section)
kkint32 MemoryConsumedEstimated() const
Setting(const KKStr &_name, const KKStr &_value, kkint32 _lineNum)
KKStr & operator=(KKStr &&src)
kkint32 MemoryConsumedEstimated() const
kkuint32 Len() const
Returns the number of characters in the string.
kkint32 NumOfSettings() const
void AddSetting(SettingPtr setting)
kkint32 MemoryConsumedEstimated() const
KKStr(const KKStr &str)
Copy Constructor.
kkint32 LookUpLineNum(const KKStr &name) const
kkint32 SectionLineNum(kkint32 sectionNum) const
KKStr SettingValueToStr(kkint32 sectionNum, const KKB::KKStr &settingName, kkint32 &lineNum) const
bool EqualIgnoreCase(const KKStrConstPtr s2) const
KKStrConstPtr SettingValue(const KKB::KKStr §ionName, const KKB::KKStr &settingName, kkint32 &lineNum) const
KKStr SubStrPart(kkint32 firstChar, kkint32 lastChar) const
returns a SubString consisting of all characters starting at index 'firstChar' and ending at 'lastInd...
void AddSetting(const KKStr &_name, const KKStr &_value, kkint32 _lineNum)
KKStrConstPtr Name() const
kkint32 NumOfSettings(const KKB::KKStr §ionName) const
void PrintFormatErrors(std::ostream &o)
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of 'std::string' strings.
SettingPtr LookUp(const KKStr &name)
KKStr SettingValueToStr(const KKB::KKStr §ionName, const KKB::KKStr &settingName, kkint32 &lineNum) const
static const KKStr & EmptyStr()
Static method that returns an Empty String.
General purpose Configuration File manager class.
void GetSetting(const char *sectiopnName, kkint32 settingNum, KKStrConstPtr &name, KKStrConstPtr &value, kkint32 &lineNum)
void AddSetting(const KKStr &_name, const KKStr &_value, kkint32 _lineNum)
void StripOutAnyComments(KKStr &line)
KKStrConstPtr Value() const
const char * Str() const
Returns a pointer to a ascii string.
FILE * osFOPEN(const char *fileName, const char *mode)
Configuration(const Configuration &c)
char operator[](kkint32 i) const
KKStr & operator=(const KKStr &src)
Used for logging messages.
ConfSection(const Configuration::ConfSection &cs)
SettingList(const SettingList &sl)
void LoadFile(RunLog &log)
void FormatErrorsAdd(kkint32 lineNum, const KKStr &error)
KKStrConstPtr SettingName(const KKB::KKStr §ionName, kkint32 settingNum) const
void FormatGood(bool _formatGood)
Configuration(const KKB::KKStr &_fileName, RunLog &_log)
VectorKKStr(const VectorKKStr &v)
void FormatErrorsClear()
Call this to clear all format error messages.