diff options
author | tradke <tradke@83718e91-0e4f-0410-abf4-91180603181f> | 2006-06-20 13:25:07 +0000 |
---|---|---|
committer | tradke <tradke@83718e91-0e4f-0410-abf4-91180603181f> | 2006-06-20 13:25:07 +0000 |
commit | f4169876ab0b22365a80d581510ea66974624619 (patch) | |
tree | 729d6e5af1a394cee90e918dd81b563e9fb1dae4 /src/rdf.cc | |
parent | 45a35e59a49dfbc5743d41822ae6438afafe3a44 (diff) |
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
Diffstat (limited to 'src/rdf.cc')
-rw-r--r-- | src/rdf.cc | 106 |
1 files changed, 61 insertions, 45 deletions
@@ -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<string> - 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<string> const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list<string> const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list<string>::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << "<form:" << * lsi << ">"; + msgbuf << indent_string << "<form:" << * lsi << ">" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + << "<form:" << node << " rdf:datatype=\"&xsd;boolean\">" + << clean (valuebuf.str()) + << "</form:" << node << ">" << endl; + for (list<string>::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << "</form:" << * lsi << ">"; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "</form:" << * lsi << ">" << 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<string> const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list<string> const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list<string>::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << "<form:" << * lsi << ">"; + msgbuf << indent_string << "<form:" << * lsi << ">" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + << "<form:" << node << " rdf:datatype=\"&xsd;integer\">" + << clean (valuebuf.str()) + << "</form:" << node << ">" << endl; + for (list<string>::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << "</form:" << * lsi << ">"; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "</form:" << * lsi << ">" << 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<CCTK_REAL>::digits10; - - ostringstream keybuf; - keybuf << key; ostringstream valuebuf; valuebuf << setprecision(prec) << value; - list<string> const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list<string> const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list<string>::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << "<form:" << * lsi << ">"; + msgbuf << indent_string << "<form:" << * lsi << ">" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + << "<form:" << node << " rdf:datatype=\"&xsd;double\">" + << clean (valuebuf.str()) + << "</form:" << node << ">" << endl; + for (list<string>::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << "</form:" << * lsi << ">"; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "</form:" << * lsi << ">" << 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<string> const keys = parse (keybuf.str()); - - msgbuf << " "; + string node; + list<string> const keys = parse (key, node); + string indent_string (NUM_INDENT_SPACES, ' '); for (list<string>::const_iterator lsi = keys.begin(); lsi != keys.end(); ++ lsi) { - msgbuf << "<form:" << * lsi << ">"; + msgbuf << indent_string << "<form:" << * lsi << ">" << endl; + indent_string.append (NUM_INDENT_SPACES, ' '); } - msgbuf << clean (valuebuf.str()); + + msgbuf << indent_string + // FIXME: is <string> the default datatype for RDF objects ?? + << "<form:" << node << ">" // " rdf:datatype=\"&xsd;string\">" + << clean (valuebuf.str()) + << "</form:" << node << ">" << endl; + for (list<string>::const_reverse_iterator lsi = keys.rbegin(); lsi != keys.rend(); ++ lsi) { - msgbuf << "</form:" << * lsi << ">"; + indent_string.erase(0, NUM_INDENT_SPACES); + msgbuf << indent_string << "</form:" << * lsi << ">" << endl; } msgbuf << endl; } @@ -519,8 +533,10 @@ namespace Formaline static list<string> - parse (string const str) + parse (char const * const key, string& node) { + assert (key); + string str(key); list<string> 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; } |