Skip to content
Snippets Groups Projects
Commit cf1b41c8 authored by Sergey Linev's avatar Sergey Linev
Browse files

[http] cleanup code in Sniffer store classes

Use references instead of pointers, use override declarations
parent 0d39fc43
No related branches found
No related tags found
No related merge requests found
......@@ -23,14 +23,13 @@ class TFolder;
class TRootSnifferStore : public TObject {
protected:
void *fResPtr; ///<! pointer on found item
TClass *fResClass; ///<! class of found item
TDataMember *fResMember; ///<! datamember pointer of found item
Int_t fResNumChilds; ///<! count of found childs, -1 by default
Int_t fResRestrict; ///<! restriction for result, 0-default, 1-readonly, 2-full
void *fResPtr{nullptr}; ///<! pointer on found item
TClass *fResClass{nullptr}; ///<! class of found item
TDataMember *fResMember{nullptr}; ///<! datamember pointer of found item
Int_t fResNumChilds{-1}; ///<! count of found childs, -1 by default
Int_t fResRestrict{0}; ///<! restriction for result, 0-default, 1-readonly, 2-full
public:
TRootSnifferStore();
virtual ~TRootSnifferStore();
virtual ~TRootSnifferStore() = default;
virtual void CreateNode(Int_t, const char *) {}
virtual void SetField(Int_t, const char *, const char *, Bool_t) {}
......@@ -55,24 +54,22 @@ public:
class TRootSnifferStoreXml : public TRootSnifferStore {
protected:
TString *fBuf; ///<! output buffer
Bool_t fCompact; ///<! produce compact xml code
TString &fBuf; ///<! output buffer
Bool_t fCompact{kFALSE}; ///<! produce compact xml code
public:
TRootSnifferStoreXml(TString &_buf, Bool_t _compact = kFALSE) : TRootSnifferStore(), fBuf(&_buf), fCompact(_compact)
explicit TRootSnifferStoreXml(TString &_buf, Bool_t _compact = kFALSE) : TRootSnifferStore(), fBuf(_buf), fCompact(_compact)
{
}
virtual ~TRootSnifferStoreXml() {}
void CreateNode(Int_t lvl, const char *nodename) final;
void SetField(Int_t lvl, const char *field, const char *value, Bool_t) final;
void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t) final;
void CloseNode(Int_t lvl, Int_t numchilds) final;
virtual void CreateNode(Int_t lvl, const char *nodename);
virtual void SetField(Int_t lvl, const char *field, const char *value, Bool_t);
virtual void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t);
virtual void CloseNode(Int_t lvl, Int_t numchilds);
Bool_t IsXml() const final { return kTRUE; }
virtual Bool_t IsXml() const { return kTRUE; }
ClassDef(TRootSnifferStoreXml, 0) // xml results store of objects sniffer
ClassDefOverride(TRootSnifferStoreXml, 0) // xml results store of objects sniffer
};
// ========================================================================
......@@ -81,20 +78,19 @@ public:
class TRootSnifferStoreJson : public TRootSnifferStore {
protected:
TString *fBuf; ///<! output buffer
Bool_t fCompact; ///<! produce compact json code
TString &fBuf; ///<! output buffer
Bool_t fCompact{kFALSE}; ///<! produce compact json code
public:
TRootSnifferStoreJson(TString &_buf, Bool_t _compact = kFALSE) : TRootSnifferStore(), fBuf(&_buf), fCompact(_compact)
explicit TRootSnifferStoreJson(TString &_buf, Bool_t _compact = kFALSE) : TRootSnifferStore(), fBuf(_buf), fCompact(_compact)
{
}
virtual ~TRootSnifferStoreJson() {}
virtual void CreateNode(Int_t lvl, const char *nodename);
virtual void SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes);
virtual void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t nfld);
virtual void CloseNode(Int_t lvl, Int_t numchilds);
void CreateNode(Int_t lvl, const char *nodename) final;
void SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes) final;
void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t nfld) final;
void CloseNode(Int_t lvl, Int_t numchilds) final;
ClassDef(TRootSnifferStoreJson, 0) // json results store of objects sniffer
ClassDefOverride(TRootSnifferStoreJson, 0) // json results store of objects sniffer
};
#endif
......@@ -21,21 +21,6 @@
ClassImp(TRootSnifferStore);
////////////////////////////////////////////////////////////////////////////////
/// normal constructor
TRootSnifferStore::TRootSnifferStore()
: TObject(), fResPtr(0), fResClass(0), fResMember(0), fResNumChilds(-1), fResRestrict(0)
{
}
////////////////////////////////////////////////////////////////////////////////
/// destructor
TRootSnifferStore::~TRootSnifferStore()
{
}
////////////////////////////////////////////////////////////////////////////////
/// set pointer on found element, class and number of childs
......@@ -60,12 +45,12 @@ void TRootSnifferStore::SetResult(void *_res, TClass *_rescl, TDataMember *_resm
ClassImp(TRootSnifferStoreXml);
////////////////////////////////////////////////////////////////////////////////
/// starts new xml node, will be closed by CloseNode
////////////////////////////////////////////////////////////////////////////////
/// starts new xml node, will be closed by CloseNode
void TRootSnifferStoreXml::CreateNode(Int_t lvl, const char *nodename)
{
fBuf->Append(TString::Format("%*s<item _name=\"%s\"", fCompact ? 0 : (lvl + 1) * 2, "", nodename));
fBuf.Append(TString::Format("%*s<item _name=\"%s\"", fCompact ? 0 : (lvl + 1) * 2, "", nodename));
}
////////////////////////////////////////////////////////////////////////////////
......@@ -74,23 +59,23 @@ ClassImp(TRootSnifferStoreXml);
void TRootSnifferStoreXml::SetField(Int_t, const char *field, const char *value, Bool_t)
{
if (strpbrk(value, "<>&\'\"") == 0) {
fBuf->Append(TString::Format(" %s=\"%s\"", field, value));
fBuf.Append(TString::Format(" %s=\"%s\"", field, value));
} else {
fBuf->Append(TString::Format(" %s=\"", field));
fBuf.Append(TString::Format(" %s=\"", field));
const char *v = value;
while (*v != 0) {
switch (*v) {
case '<': fBuf->Append("&lt;"); break;
case '>': fBuf->Append("&gt;"); break;
case '&': fBuf->Append("&amp;"); break;
case '\'': fBuf->Append("&apos;"); break;
case '\"': fBuf->Append("&quot;"); break;
default: fBuf->Append(*v); break;
case '<': fBuf.Append("&lt;"); break;
case '>': fBuf.Append("&gt;"); break;
case '&': fBuf.Append("&amp;"); break;
case '\'': fBuf.Append("&apos;"); break;
case '\"': fBuf.Append("&quot;"); break;
default: fBuf.Append(*v); break;
}
v++;
}
fBuf->Append("\"");
fBuf.Append("\"");
}
}
......@@ -99,7 +84,7 @@ void TRootSnifferStoreXml::SetField(Int_t, const char *field, const char *value,
void TRootSnifferStoreXml::BeforeNextChild(Int_t, Int_t nchld, Int_t)
{
if (nchld == 0) fBuf->Append(TString::Format(">%s", (fCompact ? "" : "\n")));
if (nchld == 0) fBuf.Append(TString::Format(">%s", (fCompact ? "" : "\n")));
}
////////////////////////////////////////////////////////////////////////////////
......@@ -109,9 +94,9 @@ void TRootSnifferStoreXml::BeforeNextChild(Int_t, Int_t nchld, Int_t)
void TRootSnifferStoreXml::CloseNode(Int_t lvl, Int_t numchilds)
{
if (numchilds > 0)
fBuf->Append(TString::Format("%*s</item>%s", fCompact ? 0 : (lvl + 1) * 2, "", (fCompact ? "" : "\n")));
fBuf.Append(TString::Format("%*s</item>%s", fCompact ? 0 : (lvl + 1) * 2, "", (fCompact ? "" : "\n")));
else
fBuf->Append(TString::Format("/>%s", (fCompact ? "" : "\n")));
fBuf.Append(TString::Format("/>%s", (fCompact ? "" : "\n")));
}
// ============================================================================
......@@ -126,14 +111,14 @@ void TRootSnifferStoreXml::CloseNode(Int_t lvl, Int_t numchilds)
ClassImp(TRootSnifferStoreJson);
////////////////////////////////////////////////////////////////////////////////
/// starts new json object, will be closed by CloseNode
////////////////////////////////////////////////////////////////////////////////
/// starts new json object, will be closed by CloseNode
void TRootSnifferStoreJson::CreateNode(Int_t lvl, const char *nodename)
void TRootSnifferStoreJson::CreateNode(Int_t lvl, const char *nodename)
{
fBuf->Append(TString::Format("%*s{", fCompact ? 0 : lvl * 4, ""));
if (!fCompact) fBuf->Append("\n");
fBuf->Append(
fBuf.Append(TString::Format("%*s{", fCompact ? 0 : lvl * 4, ""));
if (!fCompact) fBuf.Append("\n");
fBuf.Append(
TString::Format("%*s\"_name\"%s\"%s\"", fCompact ? 0 : lvl * 4 + 2, "", (fCompact ? ":" : " : "), nodename));
}
......@@ -142,29 +127,29 @@ ClassImp(TRootSnifferStoreJson);
void TRootSnifferStoreJson::SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes)
{
fBuf->Append(",");
if (!fCompact) fBuf->Append("\n");
fBuf->Append(TString::Format("%*s\"%s\"%s", fCompact ? 0 : lvl * 4 + 2, "", field, (fCompact ? ":" : " : ")));
fBuf.Append(",");
if (!fCompact) fBuf.Append("\n");
fBuf.Append(TString::Format("%*s\"%s\"%s", fCompact ? 0 : lvl * 4 + 2, "", field, (fCompact ? ":" : " : ")));
if (!with_quotes) {
fBuf->Append(value);
fBuf.Append(value);
} else {
fBuf->Append("\"");
fBuf.Append("\"");
for (const char *v = value; *v != 0; v++) switch (*v) {
case '\n': fBuf->Append("\\n"); break;
case '\t': fBuf->Append("\\t"); break;
case '\"': fBuf->Append("\\\""); break;
case '\\': fBuf->Append("\\\\"); break;
case '\b': fBuf->Append("\\b"); break;
case '\f': fBuf->Append("\\f"); break;
case '\r': fBuf->Append("\\r"); break;
case '/': fBuf->Append("\\/"); break;
case '\n': fBuf.Append("\\n"); break;
case '\t': fBuf.Append("\\t"); break;
case '\"': fBuf.Append("\\\""); break;
case '\\': fBuf.Append("\\\\"); break;
case '\b': fBuf.Append("\\b"); break;
case '\f': fBuf.Append("\\f"); break;
case '\r': fBuf.Append("\\r"); break;
case '/': fBuf.Append("\\/"); break;
default:
if ((*v > 31) && (*v < 127))
fBuf->Append(*v);
fBuf.Append(*v);
else
fBuf->Append(TString::Format("\\u%04x", (unsigned)*v));
fBuf.Append(TString::Format("\\u%04x", (unsigned)*v));
}
fBuf->Append("\"");
fBuf.Append("\"");
}
}
......@@ -173,10 +158,10 @@ void TRootSnifferStoreJson::SetField(Int_t lvl, const char *field, const char *v
void TRootSnifferStoreJson::BeforeNextChild(Int_t lvl, Int_t nchld, Int_t)
{
fBuf->Append(",");
if (!fCompact) fBuf->Append("\n");
fBuf.Append(",");
if (!fCompact) fBuf.Append("\n");
if (nchld == 0)
fBuf->Append(TString::Format("%*s\"_childs\"%s", (fCompact ? 0 : lvl * 4 + 2), "", (fCompact ? ":[" : " : [\n")));
fBuf.Append(TString::Format("%*s\"_childs\"%s", (fCompact ? 0 : lvl * 4 + 2), "", (fCompact ? ":[" : " : [\n")));
}
////////////////////////////////////////////////////////////////////////////////
......@@ -185,6 +170,7 @@ void TRootSnifferStoreJson::BeforeNextChild(Int_t lvl, Int_t nchld, Int_t)
void TRootSnifferStoreJson::CloseNode(Int_t lvl, Int_t numchilds)
{
if (numchilds > 0) fBuf->Append(TString::Format("%s%*s]", (fCompact ? "" : "\n"), fCompact ? 0 : lvl * 4 + 2, ""));
fBuf->Append(TString::Format("%s%*s}", (fCompact ? "" : "\n"), fCompact ? 0 : lvl * 4, ""));
if (numchilds > 0)
fBuf.Append(TString::Format("%s%*s]", (fCompact ? "" : "\n"), fCompact ? 0 : lvl * 4 + 2, ""));
fBuf.Append(TString::Format("%s%*s}", (fCompact ? "" : "\n"), fCompact ? 0 : lvl * 4, ""));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment