Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7256 in orxonox.OLD for trunk/src/lib/parser


Ignore:
Timestamp:
Mar 30, 2006, 11:45:31 AM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: merged the preferences back to the trunk
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/preferences . -r7233:HEAD
no conflicts… nice work

Location:
trunk/src/lib/parser
Files:
3 edited
10 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/parser/Makefile.am

    r5944 r7256  
    11SUBDIRS = \
    22          tinyxml \
    3           ini_parser
     3          ini_parser \
     4          preferences \
     5          cmdline_parser
    46
    57
  • trunk/src/lib/parser/ini_parser/ini_parser.cc

    r7221 r7256  
    392392}
    393393
     394/**
     395 * @brief edits the entry speciefied by entryName in sectionName/currentSection or creates it if it doesn't exist
     396 * @param entryName the Name of the Entry to add
     397 * @param value the value to assign to this entry
     398 * @param sectionName if NULL then this entry will be set to the currentSection
     399 * otherwise to the section refered to by sectionName.
     400 * If both are NULL no entry will be added
     401 * @return true if everything is ok false on error
     402 */
     403bool IniParser::editVar(const std::string& entryName, const std::string& value, const std::string& sectionName)
     404{
     405  std::list<IniSection>::iterator section;
     406
     407  if (!sectionName.empty())
     408  {
     409    for (section = this->sections.begin(); section != this->sections.end(); section++)
     410      if ((*section).name == sectionName)
     411        break;
     412  }
     413  else
     414    section = this->currentSection;
     415
     416  if (section == this->sections.end())
     417  {
     418    IniSection sec;
     419    sec.comment = "";
     420    sec.name = sectionName;
     421    section = this->sections.insert(this->sections.end(), sec);
     422  }
     423
     424  if (section == this->sections.end())
     425  {
     426    PRINTF(2)("section '%s' not found for value '%s'\n", sectionName.c_str(), entryName.c_str());
     427    return false;
     428  }
     429  else
     430  {
     431    //try find item
     432    std::list<IniEntry>::iterator entry;
     433    for (entry = section->entries.begin(); entry!=section->entries.end(); entry++)
     434      if (entry->name == entryName )
     435        break;
     436
     437    //found it?
     438    if ( entry != section->entries.end() )
     439    {
     440      entry->value = value;
     441
     442      return true;
     443    }
     444
     445    //not found -> create it
     446    (*section).entries.push_back(IniEntry());
     447    (*section).entries.back().comment = "";
     448    (*section).entries.back().name = entryName;
     449    (*section).entries.back().value = value;
     450    PRINTF(5)("Added Entry %s with Value '%s' to Section %s\n",
     451    (*section).entries.back().name.c_str(),
     452    (*section).entries.back().value.c_str(),
     453    (*section).name);
     454    this->currentEntry = --(*section).entries.end();
     455    return true;
     456  }
     457}
     458
    394459
    395460/**
  • trunk/src/lib/parser/ini_parser/ini_parser.h

    r7221 r7256  
    6969    bool addVar(const std::string& entryName, const std::string& value, const std::string& sectionName = "" );
    7070    const std::string& getVar(const std::string& entryName, const std::string& sectionName, const std::string& defaultValue = "") const;
     71    bool IniParser::editVar(const std::string& entryName, const std::string& value, const std::string& sectionName = "");
    7172    void setEntryComment(const std::string& comment, const std::string& entryName, const std::string& sectionName);
    7273    const std::string& getEntryComment(const std::string& entryName, const std::string& sectionName) const;
Note: See TracChangeset for help on using the changeset viewer.