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; ...@@ -23,14 +23,13 @@ class TFolder;
class TRootSnifferStore : public TObject { class TRootSnifferStore : public TObject {
protected: protected:
void *fResPtr; ///<! pointer on found item void *fResPtr{nullptr}; ///<! pointer on found item
TClass *fResClass; ///<! class of found item TClass *fResClass{nullptr}; ///<! class of found item
TDataMember *fResMember; ///<! datamember pointer of found item TDataMember *fResMember{nullptr}; ///<! datamember pointer of found item
Int_t fResNumChilds; ///<! count of found childs, -1 by default Int_t fResNumChilds{-1}; ///<! count of found childs, -1 by default
Int_t fResRestrict; ///<! restriction for result, 0-default, 1-readonly, 2-full Int_t fResRestrict{0}; ///<! restriction for result, 0-default, 1-readonly, 2-full
public: public:
TRootSnifferStore(); virtual ~TRootSnifferStore() = default;
virtual ~TRootSnifferStore();
virtual void CreateNode(Int_t, const char *) {} virtual void CreateNode(Int_t, const char *) {}
virtual void SetField(Int_t, const char *, const char *, Bool_t) {} virtual void SetField(Int_t, const char *, const char *, Bool_t) {}
...@@ -55,24 +54,22 @@ public: ...@@ -55,24 +54,22 @@ public:
class TRootSnifferStoreXml : public TRootSnifferStore { class TRootSnifferStoreXml : public TRootSnifferStore {
protected: protected:
TString *fBuf; ///<! output buffer TString &fBuf; ///<! output buffer
Bool_t fCompact; ///<! produce compact xml code Bool_t fCompact{kFALSE}; ///<! produce compact xml code
public: 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); Bool_t IsXml() const final { return kTRUE; }
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);
virtual Bool_t IsXml() const { return kTRUE; } ClassDefOverride(TRootSnifferStoreXml, 0) // xml results store of objects sniffer
ClassDef(TRootSnifferStoreXml, 0) // xml results store of objects sniffer
}; };
// ======================================================================== // ========================================================================
...@@ -81,20 +78,19 @@ public: ...@@ -81,20 +78,19 @@ public:
class TRootSnifferStoreJson : public TRootSnifferStore { class TRootSnifferStoreJson : public TRootSnifferStore {
protected: protected:
TString *fBuf; ///<! output buffer TString &fBuf; ///<! output buffer
Bool_t fCompact; ///<! produce compact json code Bool_t fCompact{kFALSE}; ///<! produce compact json code
public: 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); void CreateNode(Int_t lvl, const char *nodename) final;
virtual void SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes); void SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes) final;
virtual void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t nfld); void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t nfld) final;
virtual void CloseNode(Int_t lvl, Int_t numchilds); 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 #endif
...@@ -21,21 +21,6 @@ ...@@ -21,21 +21,6 @@
ClassImp(TRootSnifferStore); 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 /// set pointer on found element, class and number of childs
...@@ -60,12 +45,12 @@ void TRootSnifferStore::SetResult(void *_res, TClass *_rescl, TDataMember *_resm ...@@ -60,12 +45,12 @@ void TRootSnifferStore::SetResult(void *_res, TClass *_rescl, TDataMember *_resm
ClassImp(TRootSnifferStoreXml); 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) 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); ...@@ -74,23 +59,23 @@ ClassImp(TRootSnifferStoreXml);
void TRootSnifferStoreXml::SetField(Int_t, const char *field, const char *value, Bool_t) void TRootSnifferStoreXml::SetField(Int_t, const char *field, const char *value, Bool_t)
{ {
if (strpbrk(value, "<>&\'\"") == 0) { if (strpbrk(value, "<>&\'\"") == 0) {
fBuf->Append(TString::Format(" %s=\"%s\"", field, value)); fBuf.Append(TString::Format(" %s=\"%s\"", field, value));
} else { } else {
fBuf->Append(TString::Format(" %s=\"", field)); fBuf.Append(TString::Format(" %s=\"", field));
const char *v = value; const char *v = value;
while (*v != 0) { while (*v != 0) {
switch (*v) { switch (*v) {
case '<': fBuf->Append("&lt;"); break; case '<': fBuf.Append("&lt;"); break;
case '>': fBuf->Append("&gt;"); break; case '>': fBuf.Append("&gt;"); break;
case '&': fBuf->Append("&amp;"); break; case '&': fBuf.Append("&amp;"); break;
case '\'': fBuf->Append("&apos;"); break; case '\'': fBuf.Append("&apos;"); break;
case '\"': fBuf->Append("&quot;"); break; case '\"': fBuf.Append("&quot;"); break;
default: fBuf->Append(*v); break; default: fBuf.Append(*v); break;
} }
v++; v++;
} }
fBuf->Append("\""); fBuf.Append("\"");
} }
} }
...@@ -99,7 +84,7 @@ void TRootSnifferStoreXml::SetField(Int_t, const char *field, const char *value, ...@@ -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) 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) ...@@ -109,9 +94,9 @@ void TRootSnifferStoreXml::BeforeNextChild(Int_t, Int_t nchld, Int_t)
void TRootSnifferStoreXml::CloseNode(Int_t lvl, Int_t numchilds) void TRootSnifferStoreXml::CloseNode(Int_t lvl, Int_t numchilds)
{ {
if (numchilds > 0) 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 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) ...@@ -126,14 +111,14 @@ void TRootSnifferStoreXml::CloseNode(Int_t lvl, Int_t numchilds)
ClassImp(TRootSnifferStoreJson); 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, "")); fBuf.Append(TString::Format("%*s{", fCompact ? 0 : lvl * 4, ""));
if (!fCompact) fBuf->Append("\n"); if (!fCompact) fBuf.Append("\n");
fBuf->Append( fBuf.Append(
TString::Format("%*s\"_name\"%s\"%s\"", fCompact ? 0 : lvl * 4 + 2, "", (fCompact ? ":" : " : "), nodename)); TString::Format("%*s\"_name\"%s\"%s\"", fCompact ? 0 : lvl * 4 + 2, "", (fCompact ? ":" : " : "), nodename));
} }
...@@ -142,29 +127,29 @@ ClassImp(TRootSnifferStoreJson); ...@@ -142,29 +127,29 @@ ClassImp(TRootSnifferStoreJson);
void TRootSnifferStoreJson::SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes) void TRootSnifferStoreJson::SetField(Int_t lvl, const char *field, const char *value, Bool_t with_quotes)
{ {
fBuf->Append(","); fBuf.Append(",");
if (!fCompact) fBuf->Append("\n"); if (!fCompact) fBuf.Append("\n");
fBuf->Append(TString::Format("%*s\"%s\"%s", fCompact ? 0 : lvl * 4 + 2, "", field, (fCompact ? ":" : " : "))); fBuf.Append(TString::Format("%*s\"%s\"%s", fCompact ? 0 : lvl * 4 + 2, "", field, (fCompact ? ":" : " : ")));
if (!with_quotes) { if (!with_quotes) {
fBuf->Append(value); fBuf.Append(value);
} else { } else {
fBuf->Append("\""); fBuf.Append("\"");
for (const char *v = value; *v != 0; v++) switch (*v) { for (const char *v = value; *v != 0; v++) switch (*v) {
case '\n': fBuf->Append("\\n"); break; case '\n': fBuf.Append("\\n"); break;
case '\t': fBuf->Append("\\t"); break; case '\t': fBuf.Append("\\t"); break;
case '\"': fBuf->Append("\\\""); break; case '\"': fBuf.Append("\\\""); break;
case '\\': fBuf->Append("\\\\"); break; case '\\': fBuf.Append("\\\\"); break;
case '\b': fBuf->Append("\\b"); break; case '\b': fBuf.Append("\\b"); break;
case '\f': fBuf->Append("\\f"); break; case '\f': fBuf.Append("\\f"); break;
case '\r': fBuf->Append("\\r"); break; case '\r': fBuf.Append("\\r"); break;
case '/': fBuf->Append("\\/"); break; case '/': fBuf.Append("\\/"); break;
default: default:
if ((*v > 31) && (*v < 127)) if ((*v > 31) && (*v < 127))
fBuf->Append(*v); fBuf.Append(*v);
else 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 ...@@ -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) void TRootSnifferStoreJson::BeforeNextChild(Int_t lvl, Int_t nchld, Int_t)
{ {
fBuf->Append(","); fBuf.Append(",");
if (!fCompact) fBuf->Append("\n"); if (!fCompact) fBuf.Append("\n");
if (nchld == 0) 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) ...@@ -185,6 +170,7 @@ void TRootSnifferStoreJson::BeforeNextChild(Int_t lvl, Int_t nchld, Int_t)
void TRootSnifferStoreJson::CloseNode(Int_t lvl, Int_t numchilds) 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, "")); if (numchilds > 0)
fBuf->Append(TString::Format("%s%*s}", (fCompact ? "" : "\n"), fCompact ? 0 : lvl * 4, "")); 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