Jouni's Incremental BWT integrated into TextCollection
[SXSI/TextCollection.git] / incbwt / misc / parameters.cpp
1 #include <cstdlib>
2 #include <iostream>
3 #include <map>
4
5 #include "parameters.h"
6
7
8 namespace CSA
9 {
10
11
12 Parameters::Parameters()
13 {
14 }
15
16 Parameters::~Parameters()
17 {
18 }
19
20 bool
21 Parameters::contains(const std::string& key)
22 {
23   return (this->parameters.find(key) != this->parameters.end());
24 }
25
26 usint
27 Parameters::get(const std::string& key)
28 {
29   std::map<std::string, usint>::iterator iter = this->parameters.find(key);
30   if(iter == this->parameters.end()) { return 0; }
31   return iter->second;
32 }
33
34 usint
35 Parameters::get(const parameter_type& param)
36 {
37   return this->get(param.first);
38 }
39
40 void
41 Parameters::set(const std::string& key, usint value)
42 {
43   this->parameters[key] = value;
44 }
45
46 void
47 Parameters::set(const parameter_type& param)
48 {
49   this->set(param.first, param.second);
50 }
51
52 void
53 Parameters::read(std::ifstream& file)
54 {
55   while(file)
56   {
57     std::string key;
58     std::string c;
59     usint value;
60
61     file >> key >> c >> value;
62     if(c == "=") { this->parameters[key] = value; }
63   }
64 }
65
66 void Parameters::read(const std::string& file_name)
67 {
68   std::ifstream file(file_name.c_str(), std::ios_base::binary);
69   if(!file)
70   {
71     std::cerr << "Cannot open parameter file " << file_name << " for reading!" << std::endl;
72     return;
73   }
74   this->read(file);
75   file.close();
76 }
77
78 void
79 Parameters::print()
80 {
81   this->write(std::cout);
82   std::cout << std::endl;
83 }
84
85 void
86 Parameters::write(std::ostream& stream)
87 {
88   for(std::map<std::string, usint>::iterator iter = this->parameters.begin(); iter != this->parameters.end(); iter++)
89   {
90     stream << iter->first << " = " << iter->second << std::endl;
91   }
92 }
93
94 void
95 Parameters::write(const std::string& file_name)
96 {
97   std::ofstream file(file_name.c_str(), std::ios_base::binary);
98   if(!file)
99   {
100     std::cerr << "Cannot open parameter file " << file_name << " for writing!" << std::endl;
101     return;
102   }
103   this->write(file);
104   file.close();
105 }
106
107
108 } // namespace CSA