bool INIFile::deleteLine(LineIterator line_it) { // test if line exists and if we try to remove a section line if (!isValid(line_it) || (*line_it)[0] == '[') { return false; } // falls key, entfernen if ((*line_it).hasSubstring("=", 1)) { String key((*line_it).before("=")); key.trim(); line_it.getSection()->key_map_.remove(key); } line_it.getSection()->lines_.erase(line_it.position_); return true; }
bool INIFile::insertLine(LineIterator line_it, const String& line) { if (!isValid(line_it)) { Log.error() << "In INIFile " << filename_ << " , error while inserting line: " << line << " . Illegal iterator!" << endl; return false; } if (line_it.isSectionLastLine()) { return appendLine(line_it.getSection()->getName(), line); } Section& section(*line_it.getSection()); // key? if (line.hasSubstring("=", 1)) { String key(line.before("=")); key.trim(); if (section.key_map_.has(key) && check_duplicate_keys_) { Log.error() << "In INIFile " << filename_ << " , error while appending line: " << line << " . Key '" << key << "' already exists in section." << endl; return false; } line_it.getSectionNextLine(); section.key_map_[key] = section.lines_.insert(line_it.position_, line); return true; } line_it.getSectionNextLine(); section.lines_.insert(line_it.position_, line); return true; }
bool INIFile::setLine(LineIterator line_it, const String& line) { // section lines cannot be changed with this method if (!isValid(line_it) || (*line_it)[0] == '[') { return false; } String new_key(line.before("=")); new_key.trim(); if ((*line_it).hasSubstring("=", 1)) { // oh, this line had a key :( String old_key((*line_it).before("=")); old_key.trim(); if (old_key == new_key) { line_it.setLine_(line); return true; } // its a new key: delete the old one. line_it.getSection()->key_map_.remove(old_key); } line_it.setLine_(line); if (line.hasSubstring("=", 1)) { // oh, the new line has a key :( line_it.getSection()->key_map_[new_key] = line_it.getPosition(); } return true; }