aboutsummaryrefslogtreecommitdiff
path: root/src/rdf.cc
diff options
context:
space:
mode:
authortradke <tradke@83718e91-0e4f-0410-abf4-91180603181f>2006-07-06 09:51:47 +0000
committertradke <tradke@83718e91-0e4f-0410-abf4-91180603181f>2006-07-06 09:51:47 +0000
commit195a6860242988571c3546548924aec03582e629 (patch)
tree5535216bb28975af4b202c1d632de91eeba43c3f /src/rdf.cc
parent8c22b73c06892fd77341a91d9dccfed54f8970e5 (diff)
Announce a parameter value only when it was set before
or if IO::out_save_parameters is true. git-svn-id: http://svn.cactuscode.org/arrangements/CactusUtils/Formaline/trunk@94 83718e91-0e4f-0410-abf4-91180603181f
Diffstat (limited to 'src/rdf.cc')
-rw-r--r--src/rdf.cc154
1 files changed, 60 insertions, 94 deletions
diff --git a/src/rdf.cc b/src/rdf.cc
index 82cda95..d6bf8ac 100644
--- a/src/rdf.cc
+++ b/src/rdf.cc
@@ -176,6 +176,8 @@ namespace Formaline
<< "<!-- list of parameters and their values -->" << endl
<< "<!-- ============================================================ -->" << endl;
+ const bool list_all_parameters = CCTK_Equals (out_save_parameters, "all");
+
for (int thorn = 0; thorn < numthorns; ++ thorn) {
const char* const thornname = CCTK_CompiledThorn (thorn);
@@ -207,103 +209,67 @@ namespace Formaline
= CCTK_ParameterGet (pdata->name, pdata->thorn, NULL);
assert (pvalue);
- switch (pdata->type) {
- case PARAMETER_BOOLEAN:
- {
-// CCTK_INT default_value;
-// const int ierr = CCTK_SetBoolean (&default_value, pdata->defval);
-// assert (! ierr);
- const CCTK_INT value = * static_cast<const CCTK_INT*> (pvalue);
-// if (pdata->n_set > 0 or value != default_value) {
- parambuf << "<cctk:BooleanParameter rdf:about=\"#Parameters/"
- << pdata->thorn << "/" << pdata->name << "\">" << endl
- << "\t<cctk:hasName>" << fullname
- << "</cctk:hasName>" << endl
- << "\t<cctk:hasValue>" << (value ? "true" : "false")
- << "</cctk:hasValue>" << endl
- << "</cctk:BooleanParameter>" << endl;
+ if (pdata->n_set or list_all_parameters) {
+ const char* paramtype;
+ ostringstream paramvaluebuf;
+
+ switch (pdata->type) {
+ case PARAMETER_BOOLEAN:
+ {
+ paramtype = "BooleanParameter";
+ const CCTK_INT v = *static_cast<const CCTK_INT*> (pvalue);
+ paramvaluebuf << (v ? "true" : "false");
+ }
+ break;
+
+ case PARAMETER_INT:
+ {
+ paramtype = "IntegerParameter";
+ const CCTK_INT v = *static_cast<const CCTK_INT*> (pvalue);
+ paramvaluebuf << v;
+ }
+ break;
+
+ case PARAMETER_REAL:
+ {
+ paramtype = "RealParameter";
+ CCTK_REAL const v = *static_cast<const CCTK_REAL*> (pvalue);
+ paramvaluebuf << v;
+ }
+ break;
+
+ case PARAMETER_KEYWORD:
+ {
+ paramtype = "KeywordParameter";
+ const char* const v = *static_cast<const char* const*> (pvalue);
+ paramvaluebuf << clean (v);
}
-// }
- break;
-
- case PARAMETER_INT:
- {
-// const CCTK_INT default_value = strtol (pdata->defval, 0, 0);
- const CCTK_INT value = *static_cast<const CCTK_INT*> (pvalue);
-// if (pdata->n_set > 0 or value != default_value) {
- parambuf << "<cctk:IntegerParameter rdf:about=\"#Parameters/"
- << pdata->thorn << "/" << pdata->name << "\">" << endl
- << "\t<cctk:hasName>" << fullname
- << "</cctk:hasName>" << endl
- << "\t<cctk:hasValue>" << value
- << "</cctk:hasValue>" << endl
- << "</cctk:IntegerParameter>" << endl;
-// }
- }
- break;
-
- case PARAMETER_REAL:
- {
-// char* const default_string = strdup (pdata->defval);
-// assert (default_string);
- // Convert "d" and "D" to "e" and "E", because this is what
- // strtod() expects
-// for (char* p = default_string; *p; ++p) {
-// switch (*p) {
-// case 'd': *p = 'e'; break;
-// case 'D': *p = 'E'; break;
-// }
-// }
-// CCTK_REAL const default_value = strtod (default_string, 0);
-// free (default_string);
- CCTK_REAL const value = *static_cast<CCTK_REAL const *> (pvalue);
-// if (pdata->n_set > 0 or value != default_value) {
- parambuf << "<cctk:RealParameter rdf:about=\"#Parameters/"
- << pdata->thorn << "/" << pdata->name << "\">" << endl
- << "\t<cctk:hasName>" << fullname
- << "</cctk:hasName>" << endl
- << "\t<cctk:hasValue>" << value
- << "</cctk:hasValue>" << endl
- << "</cctk:RealParameter>" << endl;
-// }
- }
- break;
-
- case PARAMETER_KEYWORD:
- {
- const char* const value = *static_cast<const char*const*>(pvalue);
-// if (pdata->n_set > 0 or Util_StrCmpi (pdata->defval, value)) {
- parambuf << "<cctk:KeywordParameter rdf:about=\"#Parameters/"
- << pdata->thorn << "/" << pdata->name << "\">" << endl
- << "\t<cctk:hasName>" << fullname
- << "</cctk:hasName>" << endl
- << "\t<cctk:hasValue>" << clean (value)
- << "</cctk:hasValue>" << endl
- << "</cctk:KeywordParameter>" << endl;
-// }
- }
- break;
-
- case PARAMETER_STRING:
- {
- const char* const value = *static_cast<const char*const*>(pvalue);
-// if (pdata->n_set > 0 or strcmp (pdata->defval, value)) {
- parambuf << "<cctk:StringParameter rdf:about=\"#Parameters/"
- << pdata->thorn << "/" << pdata->name << "\">" << endl
- << "\t<cctk:hasName>" << fullname
- << "</cctk:hasName>" << endl
- << "\t<cctk:hasValue>" << clean (value)
- << "</cctk:hasValue>" << endl
- << "</cctk:StringParameter>" << endl;
-// }
- }
- break;
-
- default: assert (0 and "invalid parameter type");
-
- } // switch (pdata->type)
+ break;
+
+ case PARAMETER_STRING:
+ {
+ paramtype = "StringParameter";
+ const char* const v = *static_cast<const char* const*> (pvalue);
+ paramvaluebuf << clean (v);
+ }
+ break;
+
+ default: assert (0 and "invalid parameter type");
+
+ } // switch (pdata->type)
+
+ parambuf << "<cctk:" << paramtype << " rdf:about=\"#Parameters/"
+ << pdata->thorn << "/" << pdata->name << "\">" << endl
+ << "\t<cctk:hasName>" << fullname
+ << "</cctk:hasName>" << endl
+ << "\t<cctk:hasValue>" << paramvaluebuf.str()
+ << "</cctk:hasValue>" << endl
+ << "</cctk:" << paramtype << "Parameter>" << endl;
+
+ } // if (pdata->n_set or list_all_parameters)
free (fullname);
+
} // loop over all parameters of this thorn
} // if (is_active)