// @(#)root/proofplayer:$Id$
// Author: Philippe Canal May, 2011

/*************************************************************************
 * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TFileMergeInfo
#define ROOT_TFileMergeInfo

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TFileMergeInfo                                                       //
//                                                                      //
// This class helps passing information from the TFileMerger to         //
// the objects being merged.                                            //
//                                                                      //
// It provides access to the output directory pointer (fOutputDirectory)//
// to whether or not this is the first time Merge is being called in the//
// serie (for example for TTree, the first time we also need to Clone   //
// the object on which Merge is called), and provides for a User Data   //
// object to be passed along to each of the calls to Merge.             //
// The fUserData object is owned by the TFileMergeInfo and will be      //
// deleted when the TFileMerger moves on to the next set of objects.    //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#include "TObject.h"
#endif

#ifndef ROOT_TString
#include "TString.h"
#endif

class TDirectory;

class TFileMergeInfo {
private:
   TFileMergeInfo() = delete;
   TFileMergeInfo(const TFileMergeInfo&) = delete;
   TFileMergeInfo& operator=(const TFileMergeInfo&) = delete;

public:
   TDirectory  *fOutputDirectory;  // Target directory where the merged object will be written.
   Bool_t       fIsFirst;          // True if this is the first call to Merge for this series of object.
   TString      fOptions;          // Additional text based option being passed down to customize the merge.
   TObject     *fUserData;         // Place holder to pass extra information.  This object will be deleted at the end of each series of objects.

   TFileMergeInfo(TDirectory *outputfile) : fOutputDirectory(outputfile), fIsFirst(kTRUE), fOptions(), fUserData(0) {}
   virtual ~TFileMergeInfo() { delete fUserData; } ;

   void Reset() { fIsFirst = kTRUE; delete fUserData; fUserData = 0; }

   ClassDef(TFileMergeInfo, 0);
};

#endif
 TFileMergeInfo.h:1
 TFileMergeInfo.h:2
 TFileMergeInfo.h:3
 TFileMergeInfo.h:4
 TFileMergeInfo.h:5
 TFileMergeInfo.h:6
 TFileMergeInfo.h:7
 TFileMergeInfo.h:8
 TFileMergeInfo.h:9
 TFileMergeInfo.h:10
 TFileMergeInfo.h:11
 TFileMergeInfo.h:12
 TFileMergeInfo.h:13
 TFileMergeInfo.h:14
 TFileMergeInfo.h:15
 TFileMergeInfo.h:16
 TFileMergeInfo.h:17
 TFileMergeInfo.h:18
 TFileMergeInfo.h:19
 TFileMergeInfo.h:20
 TFileMergeInfo.h:21
 TFileMergeInfo.h:22
 TFileMergeInfo.h:23
 TFileMergeInfo.h:24
 TFileMergeInfo.h:25
 TFileMergeInfo.h:26
 TFileMergeInfo.h:27
 TFileMergeInfo.h:28
 TFileMergeInfo.h:29
 TFileMergeInfo.h:30
 TFileMergeInfo.h:31
 TFileMergeInfo.h:32
 TFileMergeInfo.h:33
 TFileMergeInfo.h:34
 TFileMergeInfo.h:35
 TFileMergeInfo.h:36
 TFileMergeInfo.h:37
 TFileMergeInfo.h:38
 TFileMergeInfo.h:39
 TFileMergeInfo.h:40
 TFileMergeInfo.h:41
 TFileMergeInfo.h:42
 TFileMergeInfo.h:43
 TFileMergeInfo.h:44
 TFileMergeInfo.h:45
 TFileMergeInfo.h:46
 TFileMergeInfo.h:47
 TFileMergeInfo.h:48
 TFileMergeInfo.h:49
 TFileMergeInfo.h:50
 TFileMergeInfo.h:51
 TFileMergeInfo.h:52
 TFileMergeInfo.h:53
 TFileMergeInfo.h:54
 TFileMergeInfo.h:55
 TFileMergeInfo.h:56
 TFileMergeInfo.h:57
 TFileMergeInfo.h:58
 TFileMergeInfo.h:59
 TFileMergeInfo.h:60
 TFileMergeInfo.h:61
 TFileMergeInfo.h:62