|
cgma
|
#include <SettingHandler.hpp>
Public Member Functions | |
| ~SettingHandler () | |
| void | add_setting (const char *name, void(*setFn)(int), int(*getFn)()) |
| void | add_setting (const char *name, void(*setFn)(double), double(*getFn)()) |
| void | add_setting (const char *name, void(*setFn)(CubitBoolean), CubitBoolean(*getFn)()) |
| void | add_setting (const char *name, void(*setFn)(CubitString), CubitString(*getFn)()) |
| void | get_settings_list (std::vector< std::pair< CubitString, SettingHolder * > > &list) |
| void | print_settings () |
| void | save_settings (const char *filename) |
| void | save_settings () |
| void | restore_settings (const char *filename) |
| SettingHolder * | get_setting_holder (CubitString name) |
| SettingType | get_setting_type (SettingHolder *setting) |
| int | get_setting_int (SettingHolder *setting) |
| double | get_setting_double (SettingHolder *setting) |
| CubitBoolean | get_setting_bool (SettingHolder *setting) |
| CubitString | get_setting_string (SettingHolder *setting) |
| int | get_setting_debug_value (SettingHolder *setting) |
| void | set_setting_int (SettingHolder *setting, int int_value) |
| void | set_setting_double (SettingHolder *setting, double double_value) |
| void | set_setting_bool (SettingHolder *setting, CubitBoolean bool_value) |
| void | set_setting_string (SettingHolder *setting, CubitString string_value) |
| void | set_setting_debug_value (SettingHolder *setting, int debug_value) |
Static Public Member Functions | |
| static SettingHandler * | instance () |
| static void | delete_instance () |
Private Member Functions | |
| SettingHandler () | |
Private Attributes | |
| void(* | debug_set_function )(const int index, const int value) |
| int(* | debug_get_function )(const int index) |
| CubitBoolean | debug_flags_added |
| std::map< CubitString, SettingHolder * > | mSettingsList |
Static Private Attributes | |
| static SettingHandler * | instance_ = NULL |
Friends | |
| class | SettingHolder |
Definition at line 18 of file SettingHandler.hpp.
Definition at line 48 of file SettingHandler.cpp.
{
std::map<CubitString, SettingHolder*>::iterator iter = mSettingsList.begin();
std::map<CubitString, SettingHolder*>::iterator end = mSettingsList.end();
for( ; iter != end; ++iter)
delete (*iter).second;
mSettingsList.clear();
}
| SettingHandler::SettingHandler | ( | ) | [private] |
Definition at line 34 of file SettingHandler.cpp.
{
debug_flags_added = CUBIT_FALSE;
}
| void SettingHandler::add_setting | ( | const char * | name, |
| void(*)(int) | setFn, | ||
| int(*)() | getFn | ||
| ) |
Definition at line 58 of file SettingHandler.cpp.
{
CubitString cs = name;
//Check to see if a setting with the same name already exists
if (mSettingsList.find(cs) != mSettingsList.end()) {
std::cerr << "The " << name << " setting has the same name as another setting.\n"
<< "This is a bug. Please report!\n";
exit(-1);
}
SettingHolder* setting = new SettingHolder(cs, setFn, getFn);
mSettingsList[cs] = setting;
}
| void SettingHandler::add_setting | ( | const char * | name, |
| void(*)(double) | setFn, | ||
| double(*)() | getFn | ||
| ) |
Definition at line 73 of file SettingHandler.cpp.
{
CubitString cs = name;
//Check to see if a setting with the same name already exists
if (mSettingsList.find(cs) != mSettingsList.end()) {
std::cerr << "The " << name << " setting has the same name as another setting.\n"
<< "This is a bug. Please report!\n";
exit(-1);
}
SettingHolder* setting = new SettingHolder(cs, setFn, getFn);
mSettingsList[cs] = setting;
}
| void SettingHandler::add_setting | ( | const char * | name, |
| void(*)(CubitBoolean) | setFn, | ||
| CubitBoolean(*)() | getFn | ||
| ) |
Definition at line 89 of file SettingHandler.cpp.
{
CubitString cs = name;
//Check to see if a setting with the same name already exists
if (mSettingsList.find(cs) != mSettingsList.end()) {
std::cerr << "The " << name << " setting has the same name as another setting.\n"
<< "This is a bug. Please report!\n";
exit(-1);
}
SettingHolder* setting = new SettingHolder(cs, setFn, getFn);
mSettingsList[cs] = setting;
}
| void SettingHandler::add_setting | ( | const char * | name, |
| void(*)(CubitString) | setFn, | ||
| CubitString(*)() | getFn | ||
| ) |
Definition at line 105 of file SettingHandler.cpp.
{
CubitString cs = name;
//Check to see if a setting with the same name already exists
if (mSettingsList.find(cs) != mSettingsList.end()) {
std::cerr << "The " << name << " setting has the same name as another setting.\n"
<< "This is a bug. Please report!\n";
exit(-1);
}
SettingHolder* setting = new SettingHolder(cs, setFn, getFn);
mSettingsList[cs] = setting;
}
| void SettingHandler::delete_instance | ( | ) | [static] |
Definition at line 39 of file SettingHandler.cpp.
| CubitBoolean SettingHandler::get_setting_bool | ( | SettingHolder * | setting | ) | [inline] |
Definition at line 84 of file SettingHandler.hpp.
{ return (setting->get_bool_function)(); }
| int SettingHandler::get_setting_debug_value | ( | SettingHolder * | setting | ) | [inline] |
| double SettingHandler::get_setting_double | ( | SettingHolder * | setting | ) | [inline] |
Definition at line 81 of file SettingHandler.hpp.
{ return (setting->get_double_function)(); }
Definition at line 347 of file SettingHandler.cpp.
{
std::map<CubitString, SettingHolder*>::iterator it = mSettingsList.find(name);
return it == mSettingsList.end() ? NULL : it->second;
}
| int SettingHandler::get_setting_int | ( | SettingHolder * | setting | ) | [inline] |
Definition at line 78 of file SettingHandler.hpp.
{ return (setting->get_int_function)(); }
| CubitString SettingHandler::get_setting_string | ( | SettingHolder * | setting | ) | [inline] |
Definition at line 87 of file SettingHandler.hpp.
{ return (setting->get_string_function)(); }
| SettingType SettingHandler::get_setting_type | ( | SettingHolder * | setting | ) | [inline] |
Definition at line 75 of file SettingHandler.hpp.
{ return setting->setting_type; }
| void SettingHandler::get_settings_list | ( | std::vector< std::pair< CubitString, SettingHolder * > > & | list | ) |
Definition at line 353 of file SettingHandler.cpp.
{
// return a list of the settings
std::map<CubitString, SettingHolder*>::iterator iter = mSettingsList.begin();
while(iter != mSettingsList.end())
{
std::pair<CubitString, SettingHolder*> tmp_pair;
CubitString key = (*iter).first;
tmp_pair.first = key;
tmp_pair.second = (*iter).second;
list.push_back( (tmp_pair) );
iter++;
}
}
| SettingHandler * SettingHandler::instance | ( | void | ) | [static] |
Definition at line 19 of file SettingHandler.cpp.
{
if (!instance_)
{
instance_ = new SettingHandler;
if (!instance_)
{
std::cerr << " *** Unable to instantiate setting_handler object ***" << std::endl;
exit(1);
}
}
return instance_;
}
| void SettingHandler::print_settings | ( | ) |
Definition at line 171 of file SettingHandler.cpp.
{
int rows, cols;
if (!AppUtil::instance()->get_terminal_size(rows, cols))
cols = 71;
--cols;
// Get starting and ending iterators from the map
std::map<CubitString, SettingHolder*>::iterator iter = mSettingsList.begin();
const std::map<CubitString, SettingHolder*>::iterator end = mSettingsList.end();
// Step through the map and build a file to hold the settings
for ( ; iter != end; ++iter )
{
SettingHolder* setting = iter->second;
int vallen = cols - setting->name.length() - 1;
if (vallen < 1) vallen = 1;
switch( setting->setting_type )
{
case 0:
PRINT_INFO("%s %*d\n", setting->name.c_str(), vallen,
(setting->get_int_function)());
break;
case 1:
PRINT_INFO("%s %*f\n", setting->name.c_str(), vallen,
(setting->get_double_function)());
break;
case 2:
PRINT_INFO("%s %*s\n", setting->name.c_str(), vallen,
(setting->get_bool_function)() ? "true" : "false");
break;
case 3:
PRINT_INFO("%s %*s\n", setting->name.c_str(), vallen,
(setting->get_string_function)().c_str());
break;
default:
PRINT_INFO("%s %*s\n", setting->name.c_str(), vallen,
"ERROR : UNKNOWN SETTING TYPE");
}
}
}
| void SettingHandler::restore_settings | ( | const char * | filename | ) |
Definition at line 268 of file SettingHandler.cpp.
{
//Open the file for reading
CubitFile file(filename, "r");
if (file) {
std::cerr << "File " << filename << " could not be opened. Settings not restored." << std::endl;
return;
}
//Read the first 2 lines of the file, we know they are not settings
//so just get rid of them
char junk[100];
fgets(junk, 100, file.file());
fgets(junk, 100, file.file());
char name[51]; //Allocate 50 bytes for the characters and 1 for a null termination
CubitString cubit_name; //A CubitString that will be used for checking if the setting
//is in the map.
char value[120]; //This will be used when getting the value of a setting
SettingHolder* setting;
int int_value = -1;
double double_value = 0.0;
CubitBoolean bool_value = CUBIT_FALSE;
CubitString string_value = "";
while (!feof(file.file())) {
//Get the setting name. This will be in the first 50 characters of a line
fgets(name, 51, file.file());
cubit_name = name;
cubit_name.trim();
//Find the setting in the map
std::map<CubitString, SettingHolder*>::iterator temp;
temp = mSettingsList.find(cubit_name);
//Read in the rest of the line no matter what
fgets(value, 120, file.file());
if (temp == mSettingsList.end()) {
std::cerr << "Setting " << cubit_name.c_str() << " was not found." << std::endl;
}
else {
setting = (*temp).second;
//Integer Settings
if (setting->setting_type == 0) {
int_value = atoi(value);
(setting->set_int_function)(int_value);
}
//Double Settings
if (setting->setting_type == 1) {
double_value = atof(value);
(setting->set_double_function)(double_value);
}
//Boolean Settings
if (setting->setting_type == 2) {
// bool_value = (CubitBoolean)(atoi(value));
bool_value = (atoi(value)) ? true : false;
(setting->set_bool_function)(bool_value);
}
//CubitString Settings
if (setting->setting_type == 3) {
string_value = value;
(setting->set_string_function)(string_value);
}
}
} //End while
}
| void SettingHandler::save_settings | ( | const char * | filename | ) |
Definition at line 120 of file SettingHandler.cpp.
{
CubitFile file(filename, "w");
if (!file) {
std::cerr << "File " << filename << " could not be opened. Settings not saved." << std::endl;
return;
}
//Put a header at the top of the file
fprintf(file.file(), "#Setting Name Setting Value\n");
fprintf(file.file(), "#------------------------------------------------------------\n");
// Get starting and ending iterators from the map
std::map<CubitString, SettingHolder*>::iterator start = mSettingsList.begin();
std::map<CubitString, SettingHolder*>::iterator end = mSettingsList.end();
// Step through the map and build a file to hold the settings
while(start != end) {
SettingHolder* setting = (*start).second;
//Integer settings
if (setting->setting_type == 0) {
fprintf(file.file(), "%-50.50s%d \n", setting->name.c_str(), (setting->get_int_function)());
}
//Double settings
else if (setting->setting_type == 1) {
fprintf(file.file(), "%-50.50s%f \n", setting->name.c_str(), (setting->get_double_function)());
}
//Boolean settings
else if (setting->setting_type == 2) {
fprintf(file.file(), "%-50.50s%d \n", setting->name.c_str(), (setting->get_bool_function)());
}
//String settings
else if (setting->setting_type == 3) {
fprintf(file.file(), "%-50.50s%s \n", setting->name.c_str(), (setting->get_string_function)().c_str());
}
else
{
assert(false);
PRINT_ERROR("Error with SettingHolder type! Please report.");
}
++start;
}
}
| void SettingHandler::save_settings | ( | ) |
Definition at line 213 of file SettingHandler.cpp.
{
const char* default_filename = "cubit.settings";
CubitFile file(default_filename, "w");
if (!file) {
std::cerr << "File " << default_filename << " could not be opened. Settings not saved." << std::endl;
return;
}
//Put a header at the top of the file
fprintf(file.file(), "#Setting Name Setting Value\n");
fprintf(file.file(), "#------------------------------------------------------------\n");
// Get starting and ending iterators from the map
std::map<CubitString, SettingHolder*>::iterator start = mSettingsList.begin();
std::map<CubitString, SettingHolder*>::iterator end = mSettingsList.end();
// Step through the map and build a file to hold the settings
while(start != end) {
SettingHolder* setting = (*start).second;
//Integer settings
if (setting->setting_type == 0) {
fprintf(file.file(), "%-50.50s%d \n", setting->name.c_str(), (setting->get_int_function)());
}
//Double settings
else if (setting->setting_type == 1) {
fprintf(file.file(), "%-50.50s%f \n", setting->name.c_str(), (setting->get_double_function)());
}
//Boolean settings
else if (setting->setting_type == 2) {
fprintf(file.file(), "%-50.50s%d \n", setting->name.c_str(), (setting->get_bool_function)());
}
//String settings
else if (setting->setting_type == 3) {
fprintf(file.file(), "%-50.50s%s \n", setting->name.c_str(), (setting->get_string_function)().c_str());
}
else
{
assert(false);
PRINT_ERROR("Error with SettingHolder type! Please report.");
}
++start;
}
}
| void SettingHandler::set_setting_bool | ( | SettingHolder * | setting, |
| CubitBoolean | bool_value | ||
| ) | [inline] |
Definition at line 99 of file SettingHandler.hpp.
{ (setting->set_bool_function)(bool_value); }
| void SettingHandler::set_setting_debug_value | ( | SettingHolder * | setting, |
| int | debug_value | ||
| ) | [inline] |
| void SettingHandler::set_setting_double | ( | SettingHolder * | setting, |
| double | double_value | ||
| ) | [inline] |
Definition at line 96 of file SettingHandler.hpp.
{ (setting->set_double_function)(double_value); }
| void SettingHandler::set_setting_int | ( | SettingHolder * | setting, |
| int | int_value | ||
| ) | [inline] |
Definition at line 93 of file SettingHandler.hpp.
{ (setting->set_int_function)(int_value); }
| void SettingHandler::set_setting_string | ( | SettingHolder * | setting, |
| CubitString | string_value | ||
| ) | [inline] |
Definition at line 102 of file SettingHandler.hpp.
{ (setting->set_string_function)(string_value); }
friend class SettingHolder [friend] |
Definition at line 20 of file SettingHandler.hpp.
Definition at line 68 of file SettingHandler.hpp.
int(* SettingHandler::debug_get_function)(const int index) [private] |
Definition at line 57 of file SettingHandler.hpp.
void(* SettingHandler::debug_set_function)(const int index, const int value) [private] |
Definition at line 56 of file SettingHandler.hpp.
SettingHandler * SettingHandler::instance_ = NULL [static, private] |
Definition at line 62 of file SettingHandler.hpp.
std::map<CubitString, SettingHolder*> SettingHandler::mSettingsList [private] |
Definition at line 70 of file SettingHandler.hpp.