X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=incbwt%2Fmisc%2Fparameters.cpp;fp=incbwt%2Fmisc%2Fparameters.cpp;h=7f7d0dd16637a3b07d617bf3bc84f22f8f62e1de;hb=40ddf9aca842bdc081b6350a4ebfe36b066c94c9;hp=0000000000000000000000000000000000000000;hpb=af8938dbee21244687184dd0502a84ce1af70c50;p=SXSI%2FTextCollection.git diff --git a/incbwt/misc/parameters.cpp b/incbwt/misc/parameters.cpp new file mode 100644 index 0000000..7f7d0dd --- /dev/null +++ b/incbwt/misc/parameters.cpp @@ -0,0 +1,108 @@ +#include +#include +#include + +#include "parameters.h" + + +namespace CSA +{ + + +Parameters::Parameters() +{ +} + +Parameters::~Parameters() +{ +} + +bool +Parameters::contains(const std::string& key) +{ + return (this->parameters.find(key) != this->parameters.end()); +} + +usint +Parameters::get(const std::string& key) +{ + std::map::iterator iter = this->parameters.find(key); + if(iter == this->parameters.end()) { return 0; } + return iter->second; +} + +usint +Parameters::get(const parameter_type& param) +{ + return this->get(param.first); +} + +void +Parameters::set(const std::string& key, usint value) +{ + this->parameters[key] = value; +} + +void +Parameters::set(const parameter_type& param) +{ + this->set(param.first, param.second); +} + +void +Parameters::read(std::ifstream& file) +{ + while(file) + { + std::string key; + std::string c; + usint value; + + file >> key >> c >> value; + if(c == "=") { this->parameters[key] = value; } + } +} + +void Parameters::read(const std::string& file_name) +{ + std::ifstream file(file_name.c_str(), std::ios_base::binary); + if(!file) + { + std::cerr << "Cannot open parameter file " << file_name << " for reading!" << std::endl; + return; + } + this->read(file); + file.close(); +} + +void +Parameters::print() +{ + this->write(std::cout); + std::cout << std::endl; +} + +void +Parameters::write(std::ostream& stream) +{ + for(std::map::iterator iter = this->parameters.begin(); iter != this->parameters.end(); iter++) + { + stream << iter->first << " = " << iter->second << std::endl; + } +} + +void +Parameters::write(const std::string& file_name) +{ + std::ofstream file(file_name.c_str(), std::ios_base::binary); + if(!file) + { + std::cerr << "Cannot open parameter file " << file_name << " for writing!" << std::endl; + return; + } + this->write(file); + file.close(); +} + + +} // namespace CSA