TDME2  1.9.200
Properties.cpp
Go to the documentation of this file.
2 
3 #include <algorithm>
4 #include <string>
5 #include <unordered_map>
6 #include <vector>
7 
8 #include <tdme/tdme.h>
12 
13 using std::sort;
14 using std::string;
15 using std::unordered_map;
16 using std::vector;
17 
19 
23 
24 void Properties::load(const string& pathName, const string& fileName, FileSystemInterface* fileSystem)
25 {
26  properties.clear();
27  vector<string> lines;
28  if (fileSystem == nullptr) fileSystem = FileSystem::getInstance();
29  fileSystem->getContentAsStringArray(pathName, fileName, lines);
30  for (auto i = 0; i < lines.size(); i++) {
31  string line = StringTools::trim(lines[i]);
32  if (line.length() == 0 || StringTools::startsWith(line, "#")) continue;
33  auto separatorPos = line.find('=');
34  if (separatorPos == -1) continue;
35  string key = StringTools::substring(line, 0, separatorPos);
36  string value = StringTools::substring(line, separatorPos + 1);
37  properties[key] = value;
38  }
39 }
40 
41 void Properties::store(const string& pathName, const string& fileName, FileSystemInterface* fileSystem) const {
42  vector<string> result;
43  int32_t idx = 0;
44  for (const auto& [key, value]: properties) {
45  result.push_back(key + "=" + value);
46  }
47  sort(result.begin(), result.end());
48  if (fileSystem == nullptr) fileSystem = FileSystem::getInstance();
49  fileSystem->setContentFromStringArray(pathName, fileName, result);
50 }
File system singleton class.
Definition: FileSystem.h:17
Properties class, which helps out with storeing or loading key value pairs from/to property files.
Definition: Properties.h:23
unordered_map< string, string > properties
Definition: Properties.h:25
void store(const string &pathName, const string &fileName, FileSystemInterface *fileSystem=nullptr) const
Store property file.
Definition: Properties.cpp:41
String tools class.
Definition: StringTools.h:22
static const string trim(const string &src)
Trim string.
Definition: StringTools.cpp:51
static const bool startsWith(const string &src, const string &prefix)
Checks if string starts with prefix.
Definition: StringTools.h:30
static const string substring(const string &src, int32_t beginIndex)
Returns substring of given string from begin index.
Definition: StringTools.h:160
virtual void setContentFromStringArray(const string &pathName, const string &fileName, const vector< string > &content)=0
Set file content as string array.
virtual void getContentAsStringArray(const string &pathName, const string &fileName, vector< string > &content)=0
Get file content as string array.