29 ConfigVariableManager::
30 ConfigVariableManager() {
38 ConfigVariableManager::
39 ~ConfigVariableManager() {
41 <<
"Internal error--ConfigVariableManager destructor called!\n";
51 VariablesByName::iterator ni;
52 ni = _variables_by_name.find(name);
53 if (ni != _variables_by_name.end()) {
60 VariableTemplates::const_iterator ti;
61 for (ti = _variable_templates.begin();
62 ti != _variable_templates.end() && variable ==
nullptr;
71 if (variable ==
nullptr) {
75 _variables_by_name[name] = variable;
76 _variables.push_back(variable);
102 ConfigFlags::ValueType value_type,
103 const string &default_value,
104 const string &description,
int flags) {
108 VariableTemplates::const_iterator ti = _variable_templates.find(gp);
109 if (ti != _variable_templates.end()) {
114 _variable_templates[gp] = core;
117 if (value_type != ConfigFlags::VT_undefined) {
120 if (!default_value.empty() ||
124 if (!description.empty()) {
134 Variables::iterator vi;
135 for (vi = _variables.begin(); vi != _variables.end(); ++vi) {
138 if (value_type != ConfigFlags::VT_undefined) {
141 if (!default_value.empty() ||
145 if (!description.empty()) {
163 if (n < _variables.size()) {
164 return _variables[n]->get_name();
175 if (n < _variables.size()) {
176 return _variables[n]->is_used();
184 void ConfigVariableManager::
185 output(std::ostream &out)
const {
186 out <<
"ConfigVariableManager, " << _variables.size() <<
" variables.";
192 void ConfigVariableManager::
193 write(std::ostream &out)
const {
194 VariablesByName::const_iterator ni;
195 for (ni = _variables_by_name.begin();
196 ni != _variables_by_name.end();
201 list_variable(variable,
false);
217 VariablesByName::const_iterator ni;
218 for (ni = _variables_by_name.begin();
219 ni != _variables_by_name.end();
224 variable->
get_value_type() == ConfigVariableCore::VT_search_path) {
227 for (
size_t i = 0; i < num_references; ++i) {
248 VariablesByName::const_iterator ni;
249 for (ni = _variables_by_name.begin();
250 ni != _variables_by_name.end();
254 nout << variable->
get_name() <<
"\n";
256 for (
size_t i = 0; i < num_references; i++) {
257 nout <<
" " << variable->
get_reference(i)->get_page()->get_name()
270 VariablesByName::const_iterator ni;
271 for (ni = _variables_by_name.begin();
272 ni != _variables_by_name.end();
276 list_variable(variable,
true);
289 VariablesByName::const_iterator ni;
290 for (ni = _variables_by_name.begin();
291 ni != _variables_by_name.end();
295 list_variable(variable,
false);
305 if (_global_ptr ==
nullptr) {
314 void ConfigVariableManager::
316 bool include_descriptions)
const {
319 nout << variable->
get_name() <<
" not used";
321 nout <<
" (referenced in "
338 variable->
get_value_type() == ConfigVariableCore::VT_search_path) {
340 nout <<
" current value:\n";
342 for (
size_t i = 0; i < num_references; ++i) {
345 <<
" (from " << decl->
get_page()->get_name() <<
")\n";
354 if (!decl->
get_page()->is_special()) {
355 nout <<
" (from " << decl->
get_page()->get_name() <<
")\n";
357 nout <<
" (defined locally)\n";
362 if (decl !=
nullptr) {