Logo ROOT   6.14/05
Reference Guide
TXMLFile.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_TXMLFile
13 #define ROOT_TXMLFile
14 
15 #include "TXMLEngine.h"
16 #include "TFile.h"
17 #include "TXMLSetup.h"
18 
19 class TKeyXML;
20 class TList;
21 class TStreamerElement;
22 class TStreamerInfo;
23 
24 class TXMLFile : public TFile, public TXMLSetup {
25 
26 protected:
27  void InitXmlFile(Bool_t create);
28  // Interface to basic system I/O routines
29  virtual Int_t SysOpen(const char *, Int_t, UInt_t) { return 0; }
30  virtual Int_t SysClose(Int_t) { return 0; }
31  virtual Int_t SysRead(Int_t, void *, Int_t) { return 0; }
32  virtual Int_t SysWrite(Int_t, const void *, Int_t) { return 0; }
33  virtual Long64_t SysSeek(Int_t, Long64_t, Int_t) { return 0; }
34  virtual Int_t SysStat(Int_t, Long_t *, Long64_t *, Long_t *, Long_t *) { return 0; }
35  virtual Int_t SysSync(Int_t) { return 0; }
36 
37  // Overwrite methods for directory I/O
39  virtual Int_t DirReadKeys(TDirectory *);
40  virtual void DirWriteKeys(TDirectory *);
41  virtual void DirWriteHeader(TDirectory *);
42 
43  InfoListRet GetStreamerInfoListImpl(bool lookupSICache);
44 
45 private:
46  // let the compiler do the job. gcc complains when the following line is activated
47  // TXMLFile(const TXMLFile &) {} //Files cannot be copied
48  void operator=(const TXMLFile &);
49 
50 public:
51  TXMLFile();
52  TXMLFile(const char *filename, Option_t *option = "read", const char *title = "title", Int_t compression = 1);
53  virtual ~TXMLFile();
54 
55  virtual void Close(Option_t *option = ""); // *MENU*
56  virtual TKey *CreateKey(TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize);
57  virtual TKey *CreateKey(TDirectory *mother, const void *obj, const TClass *cl, const char *name, Int_t bufsize);
58  virtual void DrawMap(const char * = "*", Option_t * = "") {}
59  virtual void FillBuffer(char *&) {}
60  virtual void Flush() {}
61 
62  virtual Long64_t GetEND() const { return 0; }
63  virtual Int_t GetErrno() const { return 0; }
64  virtual void ResetErrno() const {}
65 
66  virtual Int_t GetNfree() const { return 0; }
67  virtual Int_t GetNbytesInfo() const { return 0; }
68  virtual Int_t GetNbytesFree() const { return 0; }
69  virtual Long64_t GetSeekFree() const { return 0; }
70  virtual Long64_t GetSeekInfo() const { return 0; }
71  virtual Long64_t GetSize() const { return 0; }
72 
73  Int_t GetIOVersion() const { return fIOVersion; }
74 
75  virtual Bool_t IsOpen() const;
76 
77  virtual void MakeFree(Long64_t, Long64_t) {}
78  virtual void MakeProject(const char *, const char * = "*", Option_t * = "new") {} // *MENU*
79  virtual void Map(Option_t *) {} //
80  virtual void Map() {} //
81  virtual void Paint(Option_t * = "") {}
82  virtual void Print(Option_t * = "") const {}
83  virtual Bool_t ReadBuffer(char *, Int_t) { return kFALSE; }
84  virtual Bool_t ReadBuffer(char *, Long64_t, Int_t) { return kFALSE; }
85  virtual void ReadFree() {}
86  virtual Int_t Recover() { return 0; }
87  virtual Int_t ReOpen(Option_t *mode);
88  virtual void Seek(Long64_t, ERelativeTo = kBeg) {}
89 
90  virtual void SetEND(Long64_t) {}
91  virtual Int_t Sizeof() const { return 0; }
92 
93  virtual Bool_t WriteBuffer(const char *, Int_t) { return kFALSE; }
94  virtual Int_t Write(const char * = 0, Int_t = 0, Int_t = 0) { return 0; }
95  virtual Int_t Write(const char * = 0, Int_t = 0, Int_t = 0) const { return 0; }
96  virtual void WriteFree() {}
97  virtual void WriteHeader() {}
98  virtual void WriteStreamerInfo();
99 
100  // XML specific functions
101 
102  virtual void SetXmlLayout(EXMLLayout layout);
103  virtual void SetStoreStreamerInfos(Bool_t iConvert = kTRUE);
104  virtual void SetUsedDtd(Bool_t use = kTRUE);
105  virtual void SetUseNamespaces(Bool_t iUseNamespaces = kTRUE);
106 
107  Bool_t AddXmlComment(const char *comment);
108  Bool_t AddXmlStyleSheet(const char *href, const char *type = "text/css", const char *title = 0, int alternate = -1,
109  const char *media = 0, const char *charset = 0);
110  Bool_t AddXmlLine(const char *line);
111 
112  TXMLEngine *XML() { return fXML; }
113 
114 protected:
115  // functions to store streamer infos
116 
119 
123  TDirectory *FindKeyDir(TDirectory *mother, Long64_t keyid);
124  void CombineNodesTree(TDirectory *dir, XMLNodePointer_t topnode, Bool_t dolink);
125 
126  void SaveToFile();
127 
128  static void ProduceFileNames(const char *filename, TString &fname, TString &dtdname);
129 
131 
132  XMLNodePointer_t fStreamerInfoNode; //! pointer of node with streamer info data
133 
134  TXMLEngine *fXML; //! object for interface with xml library
135 
136  Int_t fIOVersion; //! indicates format of ROOT xml file
137 
138  Long64_t fKeyCounter; //! counter of created keys, used for keys id
139 
140  ClassDef(TXMLFile, 3) // ROOT file in XML format
141 };
142 
143 #endif
void ReadStreamerElement(XMLNodePointer_t node, TStreamerInfo *info)
read and reconstruct single TStreamerElement from xml node
Definition: TXMLFile.cxx:836
Describe Streamer information for one class version.
Definition: TStreamerInfo.h:43
virtual Int_t ReOpen(Option_t *mode)
Reopen a file with a different access mode, like from READ to See TFile::Open() for details...
Definition: TXMLFile.cxx:394
virtual Int_t SysRead(Int_t, void *, Int_t)
Interface to system read. All arguments like in POSIX read().
Definition: TXMLFile.h:31
virtual ~TXMLFile()
destructor of TXMLFile object
Definition: TXMLFile.cxx:365
long long Long64_t
Definition: RtypesCore.h:69
TXMLEngine * XML()
Definition: TXMLFile.h:112
TLine * line
const char Option_t
Definition: RtypesCore.h:62
TKeyXML * FindDirKey(TDirectory *dir)
Search for key which correspond to directory dir.
Definition: TXMLFile.cxx:1037
XMLDocPointer_t fDoc
Definition: TXMLFile.h:130
virtual Long64_t GetSeekFree() const
Definition: TXMLFile.h:69
virtual void Seek(Long64_t, ERelativeTo=kBeg)
Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.
Definition: TXMLFile.h:88
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:47
virtual void SetXmlLayout(EXMLLayout layout)
Change layout of objects in xml file Can be changed only for newly created file.
Definition: TXMLFile.cxx:922
virtual Bool_t IsOpen() const
return kTRUE if file is opened and can be accessed
Definition: TXMLFile.cxx:385
virtual void DirWriteKeys(TDirectory *)
Update key attributes.
Definition: TXMLFile.cxx:1094
Basic string class.
Definition: TString.h:131
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual void MakeProject(const char *, const char *="*", Option_t *="new")
Generate source code necessary to access the objects stored in the file.
Definition: TXMLFile.h:78
virtual void Close(Option_t *option="")
Close a XML file For more comments see TFile::Close() function.
Definition: TXMLFile.cxx:309
ERelativeTo
Definition: TFile.h:183
virtual TKey * CreateKey(TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
create XML key, which will store object in xml structures
Definition: TXMLFile.cxx:430
Int_t fIOVersion
object for interface with xml library
Definition: TXMLFile.h:136
Int_t GetIOVersion() const
Definition: TXMLFile.h:73
TXMLEngine * fXML
pointer of node with streamer info data
Definition: TXMLFile.h:134
virtual void ReadFree()
Read the FREE linked list.
Definition: TXMLFile.h:85
virtual void ResetErrno() const
Method resetting the errno. Is overridden in TRFIOFile.
Definition: TXMLFile.h:64
virtual void Flush()
Synchronize a file's in-memory and on-disk states.
Definition: TXMLFile.h:60
virtual void SetEND(Long64_t)
Definition: TXMLFile.h:90
void StoreStreamerElement(XMLNodePointer_t node, TStreamerElement *elem)
store data of single TStreamerElement in streamer node
Definition: TXMLFile.cxx:780
virtual Bool_t WriteBuffer(const char *, Int_t)
Write a buffer to the file.
Definition: TXMLFile.h:93
virtual void SetUseNamespaces(Bool_t iUseNamespaces=kTRUE)
Specify usage of namespaces in xml file In current implementation every instrumented class in file ge...
Definition: TXMLFile.cxx:965
XMLNodePointer_t fStreamerInfoNode
Definition: TXMLFile.h:132
#define ClassDef(name, id)
Definition: Rtypes.h:320
void * XMLDocPointer_t
Definition: TXMLEngine.h:20
virtual void FillBuffer(char *&)
Encode file output buffer.
Definition: TXMLFile.h:59
virtual Int_t SysOpen(const char *, Int_t, UInt_t)
Interface to system open. All arguments like in POSIX open().
Definition: TXMLFile.h:29
virtual Int_t SysClose(Int_t)
Interface to system close. All arguments like in POSIX close().
Definition: TXMLFile.h:30
void operator=(const TXMLFile &)
make private to exclude copy operator
Definition: TXMLFile.cxx:378
virtual Bool_t ReadBuffer(char *, Int_t)
Read a buffer from the file.
Definition: TXMLFile.h:83
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition: TKey.h:24
virtual Int_t GetNbytesFree() const
Definition: TXMLFile.h:68
Long64_t fKeyCounter
indicates format of ROOT xml file
Definition: TXMLFile.h:138
void InitXmlFile(Bool_t create)
initialize xml file and correspondent structures identical to TFile::Init() function ...
Definition: TXMLFile.cxx:272
Simple struct of the return value of GetStreamerInfoListImpl.
Definition: TFile.h:137
void SaveToFile()
Saves xml structures to the file xml elements are kept in list of TKeyXML objects When saving...
Definition: TXMLFile.cxx:476
virtual Long64_t GetSeekInfo() const
Definition: TXMLFile.h:70
virtual Int_t SysSync(Int_t)
Interface to system fsync. All arguments like in POSIX fsync().
Definition: TXMLFile.h:35
A doubly linked list.
Definition: TList.h:44
virtual void Map(Option_t *)
List the contents of a file sequentially.
Definition: TXMLFile.h:79
virtual void WriteHeader()
Write File Header.
Definition: TXMLFile.h:97
void CombineNodesTree(TDirectory *dir, XMLNodePointer_t topnode, Bool_t dolink)
Connect/disconnect all file nodes to single tree before/after saving.
Definition: TXMLFile.cxx:548
virtual Int_t Write(const char *=0, Int_t=0, Int_t=0)
Write memory objects to this file.
Definition: TXMLFile.h:94
virtual Int_t GetErrno() const
Method returning errno. Is overriden in TRFIOFile.
Definition: TXMLFile.h:63
virtual void SetStoreStreamerInfos(Bool_t iConvert=kTRUE)
If true, all correspondent to file TStreamerInfo objects will be stored in file this allows to apply ...
Definition: TXMLFile.cxx:934
Int_t ReadKeysList(TDirectory *dir, XMLNodePointer_t topnode)
Read list of keys for directory.
Definition: TXMLFile.cxx:643
Bool_t AddXmlLine(const char *line)
Add just one line on the top of xml document For instance, line can contain special xml processing in...
Definition: TXMLFile.cxx:1010
virtual Int_t Sizeof() const
Return the size in bytes of the file header.
Definition: TXMLFile.h:91
unsigned int UInt_t
Definition: RtypesCore.h:42
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:75
virtual void SetUsedDtd(Bool_t use=kTRUE)
Specify usage of DTD for this file.
Definition: TXMLFile.cxx:945
void * XMLNodePointer_t
Definition: TXMLEngine.h:17
const Bool_t kFALSE
Definition: RtypesCore.h:88
virtual Bool_t ReadBuffer(char *, Long64_t, Int_t)
Read a buffer from the file at the offset 'pos' in the file.
Definition: TXMLFile.h:84
static void ProduceFileNames(const char *filename, TString &fname, TString &dtdname)
function produces pair of xml and dtd file names
Definition: TXMLFile.cxx:446
long Long_t
Definition: RtypesCore.h:50
InfoListRet GetStreamerInfoListImpl(bool lookupSICache)
Read streamerinfo structures from xml format and provide them in the list It is user responsibility t...
Definition: TXMLFile.cxx:728
virtual Int_t GetNbytesInfo() const
Definition: TXMLFile.h:67
virtual void DrawMap(const char *="*", Option_t *="")
Draw map of objects in this file.
Definition: TXMLFile.h:58
Describe directory structure in memory.
Definition: TDirectory.h:34
int type
Definition: TGX11.cxx:120
virtual void Paint(Option_t *="")
Paint all objects in the file.
Definition: TXMLFile.h:81
virtual Int_t Recover()
Attempt to recover file if not correctly closed.
Definition: TXMLFile.h:86
virtual Int_t SysStat(Int_t, Long_t *, Long64_t *, Long_t *, Long_t *)
Return file stat information.
Definition: TXMLFile.h:34
virtual void Map()
Definition: TXMLFile.h:80
Mother of all ROOT objects.
Definition: TObject.h:37
virtual void WriteFree()
Write FREE linked list on the file.
Definition: TXMLFile.h:96
virtual void Print(Option_t *="") const
Print all objects in the file.
Definition: TXMLFile.h:82
Bool_t ReadFromFile()
read document from file Now full content of document reads into the memory Then document decomposed t...
Definition: TXMLFile.cxx:572
Bool_t AddXmlStyleSheet(const char *href, const char *type="text/css", const char *title=0, int alternate=-1, const char *media=0, const char *charset=0)
Adds style sheet definition on the top of xml document Creates <?xml-stylesheet alternate="yes" title...
Definition: TXMLFile.cxx:994
virtual void MakeFree(Long64_t, Long64_t)
Mark unused bytes on the file.
Definition: TXMLFile.h:77
virtual Long64_t DirCreateEntry(TDirectory *)
Create key for directory entry in the key.
Definition: TXMLFile.cxx:1021
TXMLFile()
default TXMLFile constructor
Definition: TXMLFile.cxx:96
virtual Int_t Write(const char *=0, Int_t=0, Int_t=0) const
One can not save a const TDirectory object.
Definition: TXMLFile.h:95
virtual Long64_t SysSeek(Int_t, Long64_t, Int_t)
Interface to system lseek.
Definition: TXMLFile.h:33
virtual Int_t DirReadKeys(TDirectory *)
Read keys for directory Make sense only once, while next time no new subnodes will be created...
Definition: TXMLFile.cxx:1082
virtual Long64_t GetSize() const
Returns the current file size.
Definition: TXMLFile.h:71
TDirectory * FindKeyDir(TDirectory *mother, Long64_t keyid)
Find a directory in motherdir with a seek equal to keyid.
Definition: TXMLFile.cxx:1060
virtual void DirWriteHeader(TDirectory *)
Write the directory header.
Definition: TXMLFile.cxx:1109
const Bool_t kTRUE
Definition: RtypesCore.h:87
virtual Int_t GetNfree() const
Definition: TXMLFile.h:66
virtual Long64_t GetEND() const
Definition: TXMLFile.h:62
char name[80]
Definition: TGX11.cxx:109
Bool_t AddXmlComment(const char *comment)
Add comment line on the top of the xml document This line can only be seen in xml editor and cannot b...
Definition: TXMLFile.cxx:976
virtual Int_t SysWrite(Int_t, const void *, Int_t)
Interface to system write. All arguments like in POSIX write().
Definition: TXMLFile.h:32
virtual void WriteStreamerInfo()
convert all TStreamerInfo, used in file, to xml format
Definition: TXMLFile.cxx:677