12 #ifndef ROOT_TRootSnifferStore
13 #define ROOT_TRootSnifferStore
24 class TRootSnifferStore :
public TObject {
26 void *fResPtr{
nullptr};
27 TClass *fResClass{
nullptr};
28 TDataMember *fResMember{
nullptr};
29 Int_t fResNumChilds{-1};
30 Int_t fResRestrict{0};
32 virtual ~TRootSnifferStore() =
default;
34 virtual void CreateNode(Int_t,
const char *) {}
35 virtual void SetField(Int_t,
const char *,
const char *, Bool_t) {}
36 virtual void BeforeNextChild(Int_t, Int_t, Int_t) {}
37 virtual void CloseNode(Int_t, Int_t) {}
39 void SetResult(
void *_res, TClass *_rescl, TDataMember *_resmemb, Int_t _res_chld, Int_t restr = 0);
41 void *GetResPtr()
const {
return fResPtr; }
42 TClass *GetResClass()
const {
return fResClass; }
43 TDataMember *GetResMember()
const {
return fResMember; }
44 Int_t GetResNumChilds()
const {
return fResNumChilds; }
45 Int_t GetResRestrict()
const {
return fResRestrict; }
46 virtual Bool_t IsXml()
const {
return kFALSE; }
48 ClassDef(TRootSnifferStore, 0)
55 class TRootSnifferStoreXml :
public TRootSnifferStore {
58 Bool_t fCompact{kFALSE};
61 explicit TRootSnifferStoreXml(TString &_buf, Bool_t _compact = kFALSE) : TRootSnifferStore(), fBuf(_buf), fCompact(_compact)
65 void CreateNode(Int_t lvl,
const char *nodename)
final;
66 void SetField(Int_t lvl,
const char *field,
const char *value, Bool_t) final;
67 void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t) final;
68 void CloseNode(Int_t lvl, Int_t numchilds) final;
70 Bool_t IsXml() const final {
return kTRUE; }
72 ClassDefOverride(TRootSnifferStoreXml, 0)
79 class TRootSnifferStoreJson :
public TRootSnifferStore {
82 Bool_t fCompact{kFALSE};
84 explicit TRootSnifferStoreJson(TString &_buf, Bool_t _compact = kFALSE) : TRootSnifferStore(), fBuf(_buf), fCompact(_compact)
88 void CreateNode(Int_t lvl,
const char *nodename)
final;
89 void SetField(Int_t lvl,
const char *field,
const char *value, Bool_t with_quotes)
final;
90 void BeforeNextChild(Int_t lvl, Int_t nchld, Int_t nfld)
final;
91 void CloseNode(Int_t lvl, Int_t numchilds)
final;
93 ClassDefOverride(TRootSnifferStoreJson, 0)