feat(const.h): added basic interface definition for constants module
This commit is contained in:
59
src/const/public/const.h
Normal file
59
src/const/public/const.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#ifndef CONST_H
|
||||
#define CONST_H
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
struct constant {
|
||||
std::string name;
|
||||
double value;
|
||||
double uncertainty;
|
||||
std::string unit;
|
||||
std::string reference;
|
||||
}
|
||||
|
||||
class constants {
|
||||
private:
|
||||
bool loaded_ = false;
|
||||
std::map<std::string, constant> constants_;
|
||||
|
||||
bool load(const std::string& filename);
|
||||
|
||||
public:
|
||||
constants();
|
||||
|
||||
constants(const std::string& filename);
|
||||
|
||||
bool is_loaded() { return loaded_; }
|
||||
|
||||
bool initialize(const std::string& filename);
|
||||
|
||||
constant get(const std::string& key);
|
||||
|
||||
constant operator[](const std::string& key) const {
|
||||
auto it = constants_.find(key);
|
||||
if (it != constants_.end()) {
|
||||
return it->second;
|
||||
} else {
|
||||
throw std::out_of_range("Constant '" + key + "' not found.");
|
||||
}
|
||||
};
|
||||
|
||||
bool has(const std::string& key) const {
|
||||
return constants_.find(key) != constants_.end();
|
||||
};
|
||||
|
||||
std::Vector<std::string> keys() const {
|
||||
std::Vector<std::string> keys;
|
||||
for (auto it = constants_.begin(); it != constants_.end(); ++it) {
|
||||
keys.push_back(it->first);
|
||||
}
|
||||
return keys;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user