22 ClassImp(TRootSnifferStore);
27 void TRootSnifferStore::SetResult(
void *_res, TClass *_rescl, TDataMember *_resmemb, Int_t _res_chld, Int_t _restr)
31 fResMember = _resmemb;
32 fResNumChilds = _res_chld;
33 fResRestrict = _restr;
46 ClassImp(TRootSnifferStoreXml);
51 void TRootSnifferStoreXml::CreateNode(Int_t lvl,
const char *nodename)
53 fBuf.Append(TString::Format(
"%*s<item _name=\"%s\"", fCompact ? 0 : (lvl + 1) * 2,
"", nodename));
59 void TRootSnifferStoreXml::SetField(Int_t,
const char *field,
const char *value, Bool_t)
61 if (strpbrk(value,
"<>&\'\"") == 0) {
62 fBuf.Append(TString::Format(
" %s=\"%s\"", field, value));
64 fBuf.Append(TString::Format(
" %s=\"", field));
65 const char *v = value;
68 case '<': fBuf.Append(
"<");
break;
69 case '>': fBuf.Append(
">");
break;
70 case '&': fBuf.Append(
"&");
break;
71 case '\'': fBuf.Append(
"'");
break;
72 case '\"': fBuf.Append(
""");
break;
73 default: fBuf.Append(*v);
break;
85 void TRootSnifferStoreXml::BeforeNextChild(Int_t, Int_t nchld, Int_t)
87 if (nchld == 0) fBuf.Append(TString::Format(
">%s", (fCompact ?
"" :
"\n")));
94 void TRootSnifferStoreXml::CloseNode(Int_t lvl, Int_t numchilds)
97 fBuf.Append(TString::Format(
"%*s</item>%s", fCompact ? 0 : (lvl + 1) * 2,
"", (fCompact ?
"" :
"\n")));
99 fBuf.Append(TString::Format(
"/>%s", (fCompact ?
"" :
"\n")));
112 ClassImp(TRootSnifferStoreJson);
117 void TRootSnifferStoreJson::CreateNode(Int_t lvl,
const char *nodename)
119 fBuf.Append(TString::Format(
"%*s{", fCompact ? 0 : lvl * 4,
""));
120 if (!fCompact) fBuf.Append(
"\n");
122 TString::Format(
"%*s\"_name\"%s\"%s\"", fCompact ? 0 : lvl * 4 + 2,
"", (fCompact ?
":" :
" : "), nodename));
128 void TRootSnifferStoreJson::SetField(Int_t lvl,
const char *field,
const char *value, Bool_t with_quotes)
131 if (!fCompact) fBuf.Append(
"\n");
132 fBuf.Append(TString::Format(
"%*s\"%s\"%s", fCompact ? 0 : lvl * 4 + 2,
"", field, (fCompact ?
":" :
" : ")));
137 for (
const char *v = value; *v != 0; v++)
switch (*v) {
138 case '\n': fBuf.Append(
"\\n");
break;
139 case '\t': fBuf.Append(
"\\t");
break;
140 case '\"': fBuf.Append(
"\\\"");
break;
141 case '\\': fBuf.Append(
"\\\\");
break;
142 case '\b': fBuf.Append(
"\\b");
break;
143 case '\f': fBuf.Append(
"\\f");
break;
144 case '\r': fBuf.Append(
"\\r");
break;
145 case '/': fBuf.Append(
"\\/");
break;
147 if ((*v > 31) && (*v < 127))
150 fBuf.Append(TString::Format(
"\\u%04x", (
unsigned)*v));
159 void TRootSnifferStoreJson::BeforeNextChild(Int_t lvl, Int_t nchld, Int_t)
162 if (!fCompact) fBuf.Append(
"\n");
164 fBuf.Append(TString::Format(
"%*s\"_childs\"%s", (fCompact ? 0 : lvl * 4 + 2),
"", (fCompact ?
":[" :
" : [\n")));
171 void TRootSnifferStoreJson::CloseNode(Int_t lvl, Int_t numchilds)
174 fBuf.Append(TString::Format(
"%s%*s]", (fCompact ?
"" :
"\n"), fCompact ? 0 : lvl * 4 + 2,
""));
175 fBuf.Append(TString::Format(
"%s%*s}", (fCompact ?
"" :
"\n"), fCompact ? 0 : lvl * 4,
""));