Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TXMLSetup.h
Go to the documentation of this file.
1 // @(#)root/xml:$Id$
2 // Author: Sergey Linev 10.05.2004
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TXMLSetup
13 #define ROOT_TXMLSetup
14 
15 #include "TObject.h"
16 #include "TString.h"
17 
18 #ifdef Bool
19 #undef Bool
20 #endif
21 #ifdef True
22 #undef True
23 #endif
24 #ifdef False
25 #undef False
26 #endif
27 
28 namespace xmlio {
29 extern const char *Root;
30 extern const char *Setup;
31 extern const char *ClassVersion;
32 extern const char *IOVersion;
33 extern const char *OnlyVersion;
34 extern const char *Ptr;
35 extern const char *Ref;
36 extern const char *Null;
37 extern const char *IdBase;
38 extern const char *Size;
39 extern const char *Xmlobject;
40 extern const char *Xmlkey;
41 extern const char *Cycle;
42 extern const char *XmlBlock;
43 extern const char *Zip;
44 extern const char *Object;
45 extern const char *ObjClass;
46 extern const char *Class;
47 extern const char *Member;
48 extern const char *Item;
49 extern const char *Name;
50 extern const char *Title;
51 extern const char *CreateTm;
52 extern const char *ModifyTm;
53 extern const char *ObjectUUID;
54 extern const char *Type;
55 extern const char *Value;
56 extern const char *v;
57 extern const char *cnt;
58 extern const char *True;
59 extern const char *False;
60 extern const char *SInfos;
61 
62 extern const char *Array;
63 extern const char *Bool;
64 extern const char *Char;
65 extern const char *Short;
66 extern const char *Int;
67 extern const char *Long;
68 extern const char *Long64;
69 extern const char *Float;
70 extern const char *Double;
71 extern const char *UChar;
72 extern const char *UShort;
73 extern const char *UInt;
74 extern const char *ULong;
75 extern const char *ULong64;
76 extern const char *String;
77 extern const char *CharStar;
78 }
79 
80 class TStreamerElement;
81 
82 class TXMLSetup {
83 public:
84  enum EXMLLayout { kSpecialized = 2, kGeneralized = 3 };
85 
86  TXMLSetup() = default;
87  TXMLSetup(const char *opt);
88  TXMLSetup(const TXMLSetup &src);
89  virtual ~TXMLSetup() = default;
90 
91  TXMLSetup &operator=(const TXMLSetup &rhs);
92 
93  TString GetSetupAsString();
94 
95  void PrintSetup();
96 
97  EXMLLayout GetXmlLayout() const { return fXmlLayout; }
98  Bool_t IsStoreStreamerInfos() const { return fStoreStreamerInfos; }
99  Bool_t IsUseDtd() const { return fUseDtd; }
100  Bool_t IsUseNamespaces() const { return fUseNamespaces; }
101 
102  virtual void SetXmlLayout(EXMLLayout layout) { fXmlLayout = layout; }
103  virtual void SetStoreStreamerInfos(Bool_t iConvert = kTRUE) { fStoreStreamerInfos = iConvert; }
104  virtual void SetUsedDtd(Bool_t use = kTRUE) { fUseDtd = use; }
105  virtual void SetUseNamespaces(Bool_t iUseNamespaces = kTRUE) { fUseNamespaces = iUseNamespaces; }
106 
107  const char *XmlConvertClassName(const char *name);
108  const char *XmlClassNameSpaceRef(const TClass *cl);
109  const char *XmlGetElementName(const TStreamerElement *el);
110 
111  Int_t GetNextRefCounter() { return fRefCounter++; }
112 
113  static TString DefaultXmlSetup();
114  static void SetNameSpaceBase(const char *namespacebase);
115 
116 protected:
117  TClass *XmlDefineClass(const char *xmlClassName);
118  const char *GetElItemName(TStreamerElement *el);
119 
120  Bool_t IsValidXmlSetup(const char *setupstr);
121  Bool_t ReadSetupFromStr(const char *setupstr);
122 
123  Int_t AtoI(const char *sbuf, Int_t def = 0, const char *errinfo = nullptr);
124 
125  EXMLLayout fXmlLayout{kSpecialized};
126  Bool_t fStoreStreamerInfos{kTRUE};
127  Bool_t fUseDtd{kFALSE};
128  Bool_t fUseNamespaces{kFALSE};
129 
130  Int_t fRefCounter{0}; //! counter , used to build id of xml references
131 
132  TString fStrBuf; //! buffer, used in XmlDefineClass() function
133 
134  static TString fgNameSpaceBase;
135 
136  ClassDef(TXMLSetup, 1) // settings to be stored in XML files
137 };
138 
139 #endif