feat(const): updated const to be truly immutable
This commit is contained in:
@@ -19,11 +19,7 @@ bool constants::initialize(const std::string& filename) {
|
||||
return load(filename);
|
||||
}
|
||||
|
||||
constant constants::get(const std::string& name) {
|
||||
return constants_[name];
|
||||
}
|
||||
|
||||
constant constants::operator[](const std::string& name) const {
|
||||
constant constants::get(const std::string& name) const {
|
||||
auto it = constants_.find(name);
|
||||
if (it != constants_.end()) {
|
||||
return it->second;
|
||||
@@ -32,6 +28,10 @@ constant constants::operator[](const std::string& name) const {
|
||||
}
|
||||
}
|
||||
|
||||
constant constants::operator[](const std::string& name) const {
|
||||
return this->get(name);
|
||||
}
|
||||
|
||||
bool constants::has(const std::string& name) const {
|
||||
return constants_.find(name) != constants_.end();
|
||||
}
|
||||
@@ -50,9 +50,9 @@ std::string constants::trim(const std::string& str) {
|
||||
size_t last = str.find_last_not_of(" \t");
|
||||
return str.substr(first, last - first + 1);
|
||||
}
|
||||
|
||||
bool constants::load(const std::string& filename) {
|
||||
std::ifstream file(filename);
|
||||
std::map<std::string, constant> constants_temp;
|
||||
if (!file.is_open()) {
|
||||
std::cerr << "Error: Unable to open file " << filename << std::endl;
|
||||
return false;
|
||||
@@ -81,12 +81,12 @@ bool constants::load(const std::string& filename) {
|
||||
// Define exact column widths from Python script
|
||||
int start = 0;
|
||||
|
||||
std::string symbol = trim(line.substr(start, col_widths_[0])); start += col_widths_[0];
|
||||
std::string name = trim(line.substr(start, col_widths_[1])); start += col_widths_[1];
|
||||
std::string valueStr = line.substr(start, col_widths_[2]); start += col_widths_[2];
|
||||
std::string unit = trim(line.substr(start, col_widths_[3])); start += col_widths_[3]; // Only trim the unit
|
||||
std::string uncertaintyStr = line.substr(start, col_widths_[4]); start += col_widths_[4];
|
||||
std::string reference = trim(line.substr(start, col_widths_[5])); // Only trim reference
|
||||
const std::string symbol = trim(line.substr(start, col_widths_[0])); start += col_widths_[0];
|
||||
const std::string name = trim(line.substr(start, col_widths_[1])); start += col_widths_[1];
|
||||
const std::string valueStr = line.substr(start, col_widths_[2]); start += col_widths_[2];
|
||||
const std::string unit = trim(line.substr(start, col_widths_[3])); start += col_widths_[3]; // Only trim the unit
|
||||
const std::string uncertaintyStr = line.substr(start, col_widths_[4]); start += col_widths_[4];
|
||||
const std::string reference = trim(line.substr(start, col_widths_[5])); // Only trim reference
|
||||
|
||||
// Convert numerical fields safely
|
||||
double value = 0.0, uncertainty = 0.0;
|
||||
@@ -102,11 +102,10 @@ bool constants::load(const std::string& filename) {
|
||||
}
|
||||
|
||||
// Store in map
|
||||
constants_temp[symbol] = {name, value, uncertainty, unit, reference};
|
||||
constants_.emplace(symbol, constant{name, value, uncertainty, unit, reference});
|
||||
}
|
||||
|
||||
file.close();
|
||||
constants_ = constants_temp;
|
||||
loaded_ = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user