From f4169876ab0b22365a80d581510ea66974624619 Mon Sep 17 00:00:00 2001 From: tradke Date: Tue, 20 Jun 2006 13:25:07 +0000 Subject: Added datatype to RDF/XML items. Put in some formatting. git-svn-id: http://svn.cactuscode.org/arrangements/CactusUtils/Formaline/trunk@89 83718e91-0e4f-0410-abf4-91180603181f --- src/rdf.cc | 106 +++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 45 deletions(-) (limited to 'src/rdf.cc') diff --git a/src/rdf.cc b/src/rdf.cc index 8c7ff0e..51405aa 100644 --- a/src/rdf.cc +++ b/src/rdf.cc @@ -23,6 +23,8 @@ #include "rdf.hh" +// number of space chars for indentation +#define NUM_INDENT_SPACES 2 namespace Formaline { @@ -35,8 +37,8 @@ namespace Formaline is_clean_for_shell (char const * str); static list - parse (string const str); - + parse (char const * const key, string& node); + rdf:: @@ -349,26 +351,29 @@ namespace Formaline store (char const * const key, bool const value) { - assert (key); - - ostringstream keybuf; - keybuf << key; ostringstream valuebuf; valuebuf << (value ? "true" : "false"); - list const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << ""; + msgbuf << indent_string << "" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + << "" + << clean (valuebuf.str()) + << "" << endl; + for (list::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << ""; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "" << endl; } msgbuf << endl; } @@ -379,26 +384,29 @@ namespace Formaline store (char const * const key, CCTK_INT const value) { - assert (key); - - ostringstream keybuf; - keybuf << key; ostringstream valuebuf; valuebuf << value; - list const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << ""; + msgbuf << indent_string << "" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + << "" + << clean (valuebuf.str()) + << "" << endl; + for (list::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << ""; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "" << endl; } msgbuf << endl; } @@ -409,28 +417,30 @@ namespace Formaline store (char const * const key, CCTK_REAL const value) { - assert (key); - int const prec = numeric_limits::digits10; - - ostringstream keybuf; - keybuf << key; ostringstream valuebuf; valuebuf << setprecision(prec) << value; - list const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << ""; + msgbuf << indent_string << "" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + << "" + << clean (valuebuf.str()) + << "" << endl; + for (list::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << ""; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "" << endl; } msgbuf << endl; } @@ -441,26 +451,30 @@ namespace Formaline store (char const * const key, char const * const value) { - assert (key); - - ostringstream keybuf; - keybuf << key; ostringstream valuebuf; valuebuf << value; - list const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << ""; + msgbuf << indent_string << "" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + // FIXME: is the default datatype for RDF objects ?? + << "" // " rdf:datatype=\"&xsd;string\">" + << clean (valuebuf.str()) + << "" << endl; + for (list::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << ""; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "" << endl; } msgbuf << endl; } @@ -519,8 +533,10 @@ namespace Formaline static list - parse (string const str) + parse (char const * const key, string& node) { + assert (key); + string str(key); list strs; size_t p = 0; for (;;) { @@ -529,7 +545,7 @@ namespace Formaline strs.push_back (str.substr (p, s - p)); p = s + 1; } - strs.push_back (str.substr (p)); + node = str.substr (p); return strs; } -- cgit v1.2.3