class Settings
{
public:
- Settings() :
- globals_(script_.getGlobalTable()),
- top_(script_[-1])
+
+ Settings()
{
- importLogScript(script_);
+ mScript.importBaseLibrary();
+ importLogFunctions(mScript);
}
+ ~Settings();
+
// get global instance
static Settings& getInstance();
void loadFromFile(const std::string& filePath);
void loadFromFiles(const std::vector<std::string>& filePaths);
+ void clear(); // remove all settings
+
+ void saveAs(const std::string& filePath);
+ void save() const;
+
template <typename T>
bool get(const std::string& key, T& value);
private:
- Script script_;
- Script::Value globals_, top_;
+
+ Script mScript;
+
+ std::string mUserFile;
};
template <typename T>
bool Settings::get(const std::string& key, T& value)
{
+ Script::Slot top = mScript[-1];
+ Script::Slot globals = mScript.getGlobalTable();
+
std::vector<std::string> fields;
boost::split(fields, key, boost::is_any_of("."));
- globals_.pushCopy();
+ globals.pushCopy();
std::vector<std::string>::iterator it;
for (it = fields.begin(); it != fields.end(); ++it)
{
- if (top_.isTable())
+ if (top.isTable())
{
- top_.pushField(*it);
+ top.pushField(*it);
}
else
{
- script_.clear();
+ mScript.clear();
return false;
}
}
- bool got = top_.get(value);
- script_.clear();
+ bool got = top.get(value);
+ mScript.clear();
return got;
}