9 #include <boost/foreach.hpp>
10 #include <boost/format.hpp>
12 namespace gp = Gaudi::Parsers;
21 std::string gp::Node::name()
const {
22 static bool init =
false;
24 names[kRoot] =
"root";
25 names[kInclude] =
"include";
26 names[kIdentifier] =
"identifier";
27 names[kProperty] =
"property";
28 names[kOperation] =
"operation";
29 names[kValue] =
"value";
30 names[kAssign] =
"assign";
31 names[kEqual] =
"equal";
32 names[kPlusEqual] =
"plus_equal";
33 names[kMinusEqual] =
"minus_equal";
34 names[kVector] =
"vector";
36 names[kPair] =
"pair";
37 names[kSimple] =
"simple";
38 names[kString] =
"string";
39 names[kReal] =
"real";
40 names[kBool] =
"bool";
41 names[kUnits] =
"units";
42 names[kUnit] =
"unit";
43 names[kCondition] =
"condition";
44 names[kIfdef] =
"ifdef";
45 names[kIfndef] =
"ifndef";
46 names[kElse] =
"else";
47 names[kPrintOptions] =
"print_options";
48 names[kPrintOn] =
"print_on";
49 names[kPrintOff] =
"print_off";
50 names[kShell] =
"shell";
51 names[kPrintTree] =
"print_tree";
52 names[kDumpFile] =
"dump_file";
53 names[kPropertyRef] =
"property_ref";
59 std::string gp::Node::ToString()
const {
63 std::string gp::Node::ToString(
int indent)
const {
65 std::string result =
"";
67 result +=
"<" + name();
69 result +=
" value=\"" +
value +
"\"";
70 if (position.line() != 0)
71 result +=
" line=\"" + str(
boost::format(
"%1%") % position.line())
73 if (position.column() != 0)
74 result +=
" column=\"" + str(
boost::format(
"%1%") % position.column())
77 if (children.size() == 0) {
81 BOOST_FOREACH(
Node const& node, children)
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
std::string ToString() const
void tab(std::string *str, int indent)