00001 // @(#)root/xml:$Id: TXMLSetup.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: Sergey Linev 10.05.2004 00003 00004 /************************************************************************* 00005 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. * 00006 * All rights reserved. * 00007 * * 00008 * For the licensing terms see $ROOTSYS/LICENSE. * 00009 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00010 *************************************************************************/ 00011 00012 #ifndef ROOT_TXMLSetup 00013 #define ROOT_TXMLSetup 00014 00015 #ifndef ROOT_TObject 00016 #include "TObject.h" 00017 #endif 00018 #ifndef ROOT_TString 00019 #include "TString.h" 00020 #endif 00021 00022 namespace xmlio { 00023 extern const char* Root; 00024 extern const char* Setup; 00025 extern const char* ClassVersion; 00026 extern const char* IOVersion; 00027 extern const char* OnlyVersion; 00028 extern const char* Ptr; 00029 extern const char* Ref; 00030 extern const char* Null; 00031 extern const char* IdBase; 00032 extern const char* Size; 00033 extern const char* Xmlobject; 00034 extern const char* Xmlkey; 00035 extern const char* Cycle; 00036 extern const char* XmlBlock; 00037 extern const char* Zip; 00038 extern const char* Object; 00039 extern const char* ObjClass; 00040 extern const char* Class; 00041 extern const char* Member; 00042 extern const char* Item; 00043 extern const char* Name; 00044 extern const char* Title; 00045 extern const char* CreateTm; 00046 extern const char* ModifyTm; 00047 extern const char* ObjectUUID; 00048 extern const char* Type; 00049 extern const char* Value; 00050 extern const char* v; 00051 extern const char* cnt; 00052 extern const char* True; 00053 extern const char* False; 00054 extern const char* SInfos; 00055 00056 extern const char* Array; 00057 extern const char* Bool; 00058 extern const char* Char; 00059 extern const char* Short; 00060 extern const char* Int; 00061 extern const char* Long; 00062 extern const char* Long64; 00063 extern const char* Float; 00064 extern const char* Double; 00065 extern const char* UChar; 00066 extern const char* UShort; 00067 extern const char* UInt; 00068 extern const char* ULong; 00069 extern const char* ULong64; 00070 extern const char* String; 00071 extern const char* CharStar; 00072 } 00073 00074 class TStreamerElement; 00075 00076 class TXMLSetup { 00077 public: 00078 enum EXMLLayout { kSpecialized = 2, 00079 kGeneralized = 3 }; 00080 00081 TXMLSetup(); 00082 TXMLSetup(const char* opt); 00083 TXMLSetup(const TXMLSetup& src); 00084 virtual ~TXMLSetup(); 00085 00086 TString GetSetupAsString(); 00087 00088 void PrintSetup(); 00089 00090 EXMLLayout GetXmlLayout() const { return fXmlLayout; } 00091 Bool_t IsStoreStreamerInfos() const { return fStoreStreamerInfos; } 00092 Bool_t IsUseDtd() const { return fUseDtd; } 00093 Bool_t IsUseNamespaces() const { return fUseNamespaces; } 00094 00095 virtual void SetXmlLayout(EXMLLayout layout) { fXmlLayout = layout; } 00096 virtual void SetStoreStreamerInfos(Bool_t iConvert = kTRUE) { fStoreStreamerInfos = iConvert; } 00097 virtual void SetUsedDtd(Bool_t use = kTRUE) { fUseDtd = use; } 00098 virtual void SetUseNamespaces(Bool_t iUseNamespaces = kTRUE) { fUseNamespaces = iUseNamespaces; } 00099 00100 const char* XmlConvertClassName(const char* name); 00101 const char* XmlClassNameSpaceRef(const TClass* cl); 00102 const char* XmlGetElementName(const TStreamerElement* el); 00103 00104 Int_t GetNextRefCounter() { return fRefCounter++; } 00105 00106 static TString DefaultXmlSetup(); 00107 static void SetNameSpaceBase(const char* namespacebase); 00108 00109 protected: 00110 00111 TClass* XmlDefineClass(const char* xmlClassName); 00112 const char* GetElItemName(TStreamerElement* el); 00113 00114 Bool_t IsValidXmlSetup(const char* setupstr); 00115 Bool_t ReadSetupFromStr(const char* setupstr); 00116 00117 Int_t AtoI(const char* sbuf, Int_t def = 0, const char* errinfo = 0); 00118 00119 EXMLLayout fXmlLayout; 00120 Bool_t fStoreStreamerInfos; 00121 Bool_t fUseDtd; 00122 Bool_t fUseNamespaces; 00123 00124 Int_t fRefCounter; //! counter , used to build id of xml references 00125 00126 TString fStrBuf; //! buffer, used in XmlDefineClass() function 00127 00128 static TString fgNameSpaceBase; 00129 00130 ClassDef(TXMLSetup,1) //settings to be stored in XML files 00131 }; 00132 00133 #endif