Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TFileMergeInfo.h
Go to the documentation of this file.
1 // @(#)root/proofplayer:$Id$
2 // Author: Philippe Canal May, 2011
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2005, 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_TFileMergeInfo
13 #define ROOT_TFileMergeInfo
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TFileMergeInfo //
18 // //
19 // This class helps passing information from the TFileMerger to //
20 // the objects being merged. //
21 // //
22 // It provides access to the output directory pointer (fOutputDirectory)//
23 // to whether or not this is the first time Merge is being called in the//
24 // serie (for example for TTree, the first time we also need to Clone //
25 // the object on which Merge is called), and provides for a User Data //
26 // object to be passed along to each of the calls to Merge. //
27 // The fUserData object is owned by the TFileMergeInfo and will be //
28 // deleted when the TFileMerger moves on to the next set of objects. //
29 // //
30 //////////////////////////////////////////////////////////////////////////
31 
32 #include "TObject.h"
33 
34 #include "TString.h"
35 
36 class TDirectory;
37 
38 namespace ROOT {
39 class TIOFeatures;
40 }
41 
42 class TFileMergeInfo {
43 private:
44  using TIOFeatures = ROOT::TIOFeatures;
45 
46  TFileMergeInfo() = delete;
47  TFileMergeInfo(const TFileMergeInfo&) = delete;
48  TFileMergeInfo& operator=(const TFileMergeInfo&) = delete;
49 
50 public:
51  TDirectory *fOutputDirectory{nullptr}; // Target directory where the merged object will be written.
52  Bool_t fIsFirst{kTRUE}; // True if this is the first call to Merge for this series of object.
53  TString fOptions; // Additional text based option being passed down to customize the merge.
54  TObject *fUserData{nullptr}; // Place holder to pass extra information. This object will be deleted at the end of each series of objects.
55  TIOFeatures *fIOFeatures{nullptr}; // Any ROOT IO features that should be explicitly enabled.
56 
57  TFileMergeInfo(TDirectory *outputfile) : fOutputDirectory(outputfile) {}
58  virtual ~TFileMergeInfo() { delete fUserData; } ;
59 
60  void Reset() { fIsFirst = kTRUE; delete fUserData; fUserData = 0; }
61 
62  ClassDef(TFileMergeInfo, 0);
63 };
64 
65 #endif