diff --git a/Jupiter/INIFile.cpp b/Jupiter/INIFile.cpp index 1336c21..8757b1e 100644 --- a/Jupiter/INIFile.cpp +++ b/Jupiter/INIFile.cpp @@ -459,6 +459,31 @@ bool Jupiter::INIFile::remove(const Jupiter::ReadableString §ion, const Jupi return false; } +bool Jupiter::INIFile::remove(size_t section_index) +{ + delete Jupiter::INIFile::data_->data.remove(section_index); + return true; +} + +bool Jupiter::INIFile::remove(const Jupiter::INIFile::Section *section) +{ + size_t i = Jupiter::INIFile::data_->data.size(); + while (i != 0) + if (Jupiter::INIFile::data_->data.get(--i) == section) + return Jupiter::INIFile::remove(i); + return false; +} + +bool Jupiter::INIFile::remove(const Jupiter::ReadableString §ion) +{ + unsigned int nameSum = section.calcChecksumi(); + size_t i = Jupiter::INIFile::data_->data.size(); + while (i != 0) + if (Jupiter::INIFile::data_->data.get(--i)->getNameChecksum() == nameSum && Jupiter::INIFile::data_->data.get(i)->getName().equalsi(section)) + return Jupiter::INIFile::remove(i); + return false; +} + size_t Jupiter::INIFile::getSections() const { return Jupiter::INIFile::data_->data.size(); diff --git a/Jupiter/INIFile.h b/Jupiter/INIFile.h index 1c37395..a4cacd9 100644 --- a/Jupiter/INIFile.h +++ b/Jupiter/INIFile.h @@ -339,6 +339,16 @@ namespace Jupiter */ bool remove(const Jupiter::ReadableString §ion, const Jupiter::ReadableString &keyName); + /** + * @brief Removes a section. Does not modify any files. + * + * @param section Section to remove. + * @return True if a section was removed, false otherwise. + */ + bool remove(size_t section_index); + bool remove(const Jupiter::INIFile::Section *section); + bool remove(const Jupiter::ReadableString §ion); + /** * @brief Returns the number of sections in memory. * diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index f9f589f..84c535c 100644 Binary files a/Release/Jupiter.lib and b/Release/Jupiter.lib differ