ROOT  6.06/09
Reference Guide
TGenericClassInfo.cxx
Go to the documentation of this file.
1 // @(#)root/meta:$Id$
2 // Author: Philippe Canal 08/05/2002
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2002, Rene Brun, Fons Rademakers and al. *
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 #include "TROOT.h"
13 #include "TClass.h"
14 #include "TVirtualStreamerInfo.h"
15 #include "TStreamer.h"
16 #include "TVirtualIsAProxy.h"
18 #include "TCollectionProxyInfo.h"
19 #include "TSchemaRule.h"
20 #include "TSchemaRuleSet.h"
21 #include "TError.h"
22 #include "TVirtualMutex.h"
23 #include "TInterpreter.h"
24 #include "TClassTable.h"
25 
26 namespace ROOT {
27 namespace Internal {
28 
29  const TInitBehavior *DefineBehavior(void * /*parent_type*/,
30  void * /*actual_type*/)
31  {
32 
33  // This function loads the default behavior for the
34  // loading of classes.
35 
36  static TDefaultInitBehavior theDefault;
37  return &theDefault;
38  }
39 } // Internal
40 
41 
42  TGenericClassInfo::TGenericClassInfo(const char *fullClassname,
43  const char *declFileName, Int_t declFileLine,
44  const type_info &info, const Internal::TInitBehavior *action,
45  DictFuncPtr_t dictionary,
46  TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof)
47  : fAction(action), fClass(0), fClassName(fullClassname),
48  fDeclFileName(declFileName), fDeclFileLine(declFileLine),
49  fDictionary(dictionary), fInfo(info),
50  fImplFileName(0), fImplFileLine(0),
51  fIsA(isa),
52  fVersion(1),
53  fMerge(0),fResetAfterMerge(0),fNew(0),fNewArray(0),fDelete(0),fDeleteArray(0),fDestructor(0), fDirAutoAdd(0), fStreamer(0),
54  fStreamerFunc(0), fConvStreamerFunc(0), fCollectionProxy(0), fSizeof(sizof), fPragmaBits(pragmabits),
55  fCollectionProxyInfo(0), fCollectionStreamerInfo(0)
56  {
57  // Constructor.
58 
59  Init(pragmabits);
60  }
61 
62  TGenericClassInfo::TGenericClassInfo(const char *fullClassname, Int_t version,
63  const char *declFileName, Int_t declFileLine,
64  const type_info &info, const Internal::TInitBehavior *action,
65  DictFuncPtr_t dictionary,
66  TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof)
67  : fAction(action), fClass(0), fClassName(fullClassname),
68  fDeclFileName(declFileName), fDeclFileLine(declFileLine),
69  fDictionary(dictionary), fInfo(info),
70  fImplFileName(0), fImplFileLine(0),
71  fIsA(isa),
72  fVersion(version),
73  fMerge(0),fResetAfterMerge(0),fNew(0),fNewArray(0),fDelete(0),fDeleteArray(0),fDestructor(0), fDirAutoAdd(0), fStreamer(0),
74  fStreamerFunc(0), fConvStreamerFunc(0), fCollectionProxy(0), fSizeof(sizof), fPragmaBits(pragmabits),
75  fCollectionProxyInfo(0), fCollectionStreamerInfo(0)
76 
77  {
78  // Constructor with version number and no showmembers.
79 
80  Init(pragmabits);
81  }
82 
83  class TForNamespace {}; // Dummy class to give a typeid to namespace (See also TClassTable.cc)
84 
85  TGenericClassInfo::TGenericClassInfo(const char *fullClassname, Int_t version,
86  const char *declFileName, Int_t declFileLine,
87  const Internal::TInitBehavior *action,
88  DictFuncPtr_t dictionary, Int_t pragmabits)
89  : fAction(action), fClass(0), fClassName(fullClassname),
90  fDeclFileName(declFileName), fDeclFileLine(declFileLine),
91  fDictionary(dictionary), fInfo(typeid(TForNamespace)),
92  fImplFileName(0), fImplFileLine(0),
93  fIsA(0),
94  fVersion(version),
95  fMerge(0),fResetAfterMerge(0),fNew(0),fNewArray(0),fDelete(0),fDeleteArray(0),fDestructor(0), fDirAutoAdd(0), fStreamer(0),
96  fStreamerFunc(0), fConvStreamerFunc(0), fCollectionProxy(0), fSizeof(0), fPragmaBits(pragmabits),
97  fCollectionProxyInfo(0), fCollectionStreamerInfo(0)
98 
99  {
100  // Constructor for namespace
101 
102  Init(pragmabits);
103  }
104 
105  /* TGenericClassInfo::TGenericClassInfo(const TGenericClassInfo& gci) :
106  fAction(gci.fAction),
107  fClass(gci.fClass),
108  fClassName(gci.fClassName),
109  fDeclFileName(gci.fDeclFileName),
110  fDeclFileLine(gci.fDeclFileLine),
111  fDictionary(gci.fDictionary),
112  fInfo(gci.fInfo),
113  fImplFileName(gci.fImplFileName),
114  fImplFileLine(gci.fImplFileLine),
115  fIsA(gci.fIsA),
116  fVersion(gci.fVersion),
117  fNew(gci.fNew),
118  fNewArray(gci.fNewArray),
119  fDelete(gci.fDelete),
120  fDeleteArray(gci.fDeleteArray),
121  fDestructor(gci.fDestructor),
122  fStreamer(gci.fStreamer),
123  fCollectionProxy(gci.fCollectionProxy),
124  fSizeof(gci.fSizeof)
125  { }
126 
127  TGenericClassInfo& TGenericClassInfo::operator=(const TGenericClassInfo& gci)
128  {
129  if(this!=&gci) {
130  fAction=gci.fAction;
131  fClass=gci.fClass;
132  fClassName=gci.fClassName;
133  fDeclFileName=gci.fDeclFileName;
134  fDeclFileLine=gci.fDeclFileLine;
135  fDictionary=gci.fDictionary;
136  fInfo=gci.fInfo;
137  fImplFileName=gci.fImplFileName;
138  fImplFileLine=gci.fImplFileLine;
139  fIsA=gci.fIsA;
140  fVersion=gci.fVersion;
141  fNew=gci.fNew;
142  fNewArray=gci.fNewArray;
143  fDelete=gci.fDelete;
144  fDeleteArray=gci.fDeleteArray;
145  fDestructor=gci.fDestructor;
146  fStreamer=gci.fStreamer;
147  fCollectionProxy=gci.fCollectionProxy;
148  fSizeof=gci.fSizeof;
149  } return *this;
150  }
151  */
152 
154  {
155  // Initilization routine.
156 
157  //TVirtualStreamerInfo::Class_Version MUST be the same as TStreamerInfo::Class_Version
158  if (fVersion==-2) fVersion = TVirtualStreamerInfo::Class_Version();
159  if (!fAction) return;
161  fVersion,
162  fInfo, // typeid(RootClass),
163  fDictionary,
164  pragmabits);
165  }
166 
168  {
169  // Destructor.
170 
171  delete fCollectionProxyInfo;
173  delete fStreamer;
174  if (!fClass) delete fIsA; // fIsA is adopted by the class if any.
175  fIsA = 0;
177  if (!gROOTLocal || !gROOTLocal->Initialized() || !gROOTLocal->GetListOfClasses()) return;
179  }
180 
182  {
183  // Return the creator action.
184 
185  return *fAction;
186  }
187 
189  {
190  // Generate and return the TClass object.
191 
192  // First make sure that TROOT is initialized, do this before checking
193  // for fClass. If the request is for the TClass of TObject and TROOT
194  // is not initialized, the TROOT creation (because of the ROOT pcm files)
195  // will lead to its own request of the TClass for TObject and thus
196  // upon returning, the TClass for TObject will have already been created
197  // and fClass will have been set.
198  if (!gROOT)
199  ::Fatal("TClass::TClass", "ROOT system not initialized");
200 
201  if (!fClass && fAction) {
203  // Check again, while we waited for the lock, something else might
204  // have set fClass.
205  if (fClass) return fClass;
206 
208  GetVersion(),
209  GetInfo(),
210  GetIsA(),
211  GetDeclFileName(),
212  GetImplFileName(),
213  GetDeclFileLine(),
214  GetImplFileLine());
217  }
218  fClass->SetNew(fNew);
229  // If IsZombie is true, something went wrong and we will not be
230  // able to properly copy the collection proxy
231  if (!fClass->IsZombie()) {
233  else if (fCollectionProxyInfo) {
235  }
236  }
238 
239  //---------------------------------------------------------------------
240  // Attach the schema evolution information
241  ///////////////////////////////////////////////////////////////////////
242 
243  CreateRuleSet( fReadRules, true );
244  CreateRuleSet( fReadRawRules, false );
245  }
246  return fClass;
247  }
248 
249  /////////////////////////////////////////////////////////////////////////////
250  /// Attach the schema evolution information to TClassObject
251 
252  void TGenericClassInfo::CreateRuleSet( std::vector<Internal::TSchemaHelper>& vect,
253  Bool_t ProcessReadRules )
254  {
255  if ( vect.empty() ) {
256  return;
257  }
258 
259  //------------------------------------------------------------------------
260  // Get the rules set
261  //////////////////////////////////////////////////////////////////////////
262 
264 
265  //------------------------------------------------------------------------
266  // Process the rules
267  //////////////////////////////////////////////////////////////////////////
268 
269  TSchemaRule* rule;
270  TString errmsg;
271  std::vector<Internal::TSchemaHelper>::iterator it;
272  for( it = vect.begin(); it != vect.end(); ++it ) {
273  rule = new TSchemaRule();
274  rule->SetTarget( it->fTarget );
275  rule->SetTargetClass( fClass->GetName() );
276  rule->SetSourceClass( it->fSourceClass );
277  rule->SetSource( it->fSource );
278  rule->SetCode( it->fCode );
279  rule->SetVersion( it->fVersion );
280  rule->SetChecksum( it->fChecksum );
281  rule->SetEmbed( it->fEmbed );
282  rule->SetInclude( it->fInclude );
283  rule->SetAttributes( it->fAttributes );
284 
285  if( ProcessReadRules ) {
287  rule->SetReadFunctionPointer( (TSchemaRule::ReadFuncPtr_t)it->fFunctionPtr );
288  }
289  else {
291  rule->SetReadRawFunctionPointer( (TSchemaRule::ReadRawFuncPtr_t)it->fFunctionPtr );
292  }
293  if( !rset->AddRule( rule, TSchemaRuleSet::kCheckAll, &errmsg ) ) {
294  ::Warning( "TGenericClassInfo", "The rule for class: \"%s\": version, \"%s\" and data members: \"%s\" has been skipped because %s.",
295  GetClassName(), it->fVersion.c_str(), it->fTarget.c_str(), errmsg.Data() );
296  delete rule;
297  }
298  }
299  }
300 
302  {
303  // Return the class name
304 
305  return fClassName;
306  }
307 
308 
310  {
311  // Return the set of info we have for the CollectionProxy, if any
312 
313  return fCollectionProxyInfo;
314  }
315 
317  {
318  // Return the set of info we have for the Collection Streamer, if any
319 
320  return fCollectionProxyInfo;
321  }
322 
323  const type_info &TGenericClassInfo::GetInfo() const
324  {
325  // Return the typeinfo value
326 
327  return fInfo;
328  }
329 
330  const std::vector<Internal::TSchemaHelper>& TGenericClassInfo::GetReadRawRules() const
331  {
332  // Return the list of rule give raw access to the TBuffer.
333 
334  return fReadRawRules;
335  }
336 
337 
338  const std::vector<Internal::TSchemaHelper>& TGenericClassInfo::GetReadRules() const
339  {
340  // Return the list of Data Model Evolution regular read rules.
341  return fReadRules;
342  }
343 
345  {
346  // Import the information from the class template.
347 
349  if (info) SetImplFile(info->GetTitle(), info->GetUniqueID());
350  }
351 
353  {
354  // Set the name of the implementation file.
355 
356  fImplFileName = file;
358  if (fClass) fClass->AddImplFile(file,line);
359  return 0;
360  }
361 
363  {
364  // Set the name of the declaration file.
365 
366  fDeclFileName = file;
368  if (fClass) fClass->SetDeclFile(file,line);
369  return 0;
370  }
371 
373  {
374  // Set a class version number.
375 
377  fVersion = version;
378  return version;
379  }
380 
382  {
383  // Set the info for the CollectionProxy and take ownership of the object
384  // being passed
385 
386  delete fCollectionProxyInfo;;
387  fCollectionProxyInfo = info;
388  }
389 
391  {
392  // Set the info for the Collection Streamer and take ownership of the object
393  // being passed
394 
397  }
398 
400  {
401  // Set a Streamer object. The streamer object is now 'owned'
402  // by the TGenericClassInfo.
403 
404  delete fStreamer; fStreamer = 0;
405  if (fClass) {
406  fClass->AdoptStreamer(streamer);
407  } else {
408  fStreamer = streamer;
409  }
410  return 0;
411  }
412 
414  {
415  // Set the CollectProxy object. The CollectionProxy object is now 'owned'
416  // by the TGenericClassInfo.
417 
419  fCollectionProxy = collProxy;
420  if (fClass && fCollectionProxy && !fClass->IsZombie()) {
422  }
423  return 0;
424  }
425 
426  void TGenericClassInfo::SetReadRawRules( const std::vector<Internal::TSchemaHelper>& rules )
427  {
428  // Set the list of Data Model Evolution read rules giving direct access to the TBuffer.
429  fReadRawRules = rules;
430  }
431 
432 
433  void TGenericClassInfo::SetReadRules( const std::vector<Internal::TSchemaHelper>& rules )
434  {
435  // Set the list of Data Model Evolution regular read rules.
436  fReadRules = rules;
437  }
438 
440  {
441  // Set a External Streamer function.
442 
443  delete fStreamer; fStreamer = 0;
444  if (fClass) {
445  fClass->AdoptStreamer(new TClassStreamer(streamer));
446  } else {
447  fStreamer = new TClassStreamer(streamer);
448  }
449  return 0;
450  }
451 
453  {
454  // Set a wrapper around the Streamer member function.
455 
456  fStreamerFunc = streamer;
457  if (fClass) fClass->SetStreamerFunc(streamer);
458  }
459 
461  {
462  // Set a wrapper around the Streamer member function.
463 
464  fConvStreamerFunc = streamer;
465  if (fClass) fClass->SetConvStreamerFunc(streamer);
466  }
467 
469  {
470  // Get the name of the declaring header file.
471 
472  return fDeclFileName;
473  }
474 
476  {
477  // Get the declaring line number.
478 
479  return fDeclFileLine;
480  }
481 
483  {
484  // Get the implementation filename.
485 
487  return fImplFileName;
488  }
489 
491  {
492  // Get the ClassImp line number.
493 
495  return fImplFileLine;
496  }
497 
499  {
500  // Return the class version number.
501 
502  return fVersion;
503  }
504 
506  {
507  // Return the actual type of the object.
508 
509  return (*GetIsA())(obj);
510  }
511 
513  {
514  // Return the IsA proxy.
515 
516  return fIsA;
517  }
518 
520  {
521  // Install a new wrapper around 'new'.
522 
523  fNew = newFunc;
524  if (fClass) fClass->SetNew(fNew);
525  }
526 
528  {
529  // Install a new wrapper around 'new []'.
530 
531  fNewArray = newArrayFunc;
533  }
534 
536  {
537  // Install a new wrapper around 'delete'.
538 
539  fDelete = deleteFunc;
541  }
542 
544  {
545  // Install a new wrapper around 'delete []'.
546 
547  fDeleteArray = deleteArrayFunc;
549  }
550 
552  {
553  // Install a new wrapper around the destructor.
554 
555  fDestructor = destructorFunc;
557  }
558 
560  {
561  // Install a new wrapper around SetDirectoryAutoAdd.
562 
563  fDirAutoAdd = func;
565  }
566 
568  {
569  // Install a new wrapper around the Merge function.
570 
571  fMerge = func;
572  if (fClass) fClass->SetMerge(fMerge);
573  }
574 
576  {
577  // Install a new wrapper around the Merge function.
578 
581  }
582 
584  {
585  // Get the wrapper around 'new'.
586 
587  return fNew;
588  }
589 
591  {
592  // Get the wrapper around 'new []'.
593 
594  return fNewArray;
595  }
596 
598  {
599  // Get the wrapper around 'delete'.
600 
601  return fDelete;
602  }
603 
605  {
606  // Get the wrapper around 'delete []'.
607 
608  return fDeleteArray;
609  }
610 
612  {
613  // Get the wrapper around the destructor.
614 
615  return fDestructor;
616  }
617 
619  {
620  // Get the wrapper around the directory-auto-add function .
621 
622  return fDirAutoAdd;
623  }
624 
625 }
void SetStreamerFunc(ClassStreamerFunc_t)
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:52
Bool_t AddRule(TSchemaRule *rule, EConsistencyCheck checkConsistency=kCheckAll, TString *errmsg=0)
The consistency check always fails if the TClass object was not set! if checkConsistency is: kNoCheck...
void(* ReadRawFuncPtr_t)(char *, TBuffer &)
Definition: TSchemaRule.h:43
void(* ClassStreamerFunc_t)(TBuffer &, void *)
Definition: Rtypes.h:67
Detail::TCollectionProxyInfo * fCollectionProxyInfo
void SetReadRawFunctionPointer(ReadRawFuncPtr_t ptr)
Set the pointer to the function to be run for the rule (if it is a raw read rule).
const Internal::TInitBehavior & GetAction() const
const std::vector< ROOT::Internal::TSchemaHelper > & GetReadRawRules() const
Namespace for new ROOT classes and functions.
Definition: ROOT.py:1
void SetDelete(DelFunc_t deleteFunc)
TLine * line
void Fatal(const char *location, const char *msgfmt,...)
void SetDeclFile(const char *name, int line)
Definition: TClass.h:492
void SetDelete(ROOT::DelFunc_t deleteFunc)
Install a new wrapper around 'delete'.
Definition: TClass.cxx:6531
TVirtualIsAProxy * GetIsA() const
void SetConvStreamerFunc(ClassConvStreamerFunc_t)
void SetConvStreamerFunc(ClassConvStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom conversion streamer.
Definition: TClass.cxx:6475
R__EXTERN TVirtualMutex * gInterpreterMutex
Definition: TInterpreter.h:46
const type_info & GetInfo() const
void CreateRuleSet(std::vector< ROOT::Internal::TSchemaHelper > &vect, Bool_t ProcessReadRules)
Attach the schema evolution information to TClassObject.
void SetDeleteArray(ROOT::DelArrFunc_t deleteArrayFunc)
Install a new wrapper around 'delete []'.
Definition: TClass.cxx:6539
Detail::TCollectionProxyInfo * GetCollectionStreamerInfo() const
#define gROOT
Definition: TROOT.h:340
Bool_t IsZombie() const
Definition: TObject.h:141
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
DirAutoAdd_t GetDirectoryAutoAdd() const
Short_t AdoptCollectionProxy(TVirtualCollectionProxy *)
Short_t SetVersion(Short_t version)
Bool_t SetVersion(const TString &version)
Set the version string - returns kFALSE if the format is incorrect.
ClassConvStreamerFunc_t fConvStreamerFunc
void AdoptStreamer(TClassStreamer *strm)
Adopt a TClassStreamer object.
Definition: TClass.cxx:6424
const TInitBehavior * DefineBehavior(void *, void *)
void SetClassSize(Int_t sizof)
Definition: TClass.h:268
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:732
Long64_t(* MergeFunc_t)(void *, TCollection *, TFileMergeInfo *)
Definition: Rtypes.h:153
void SetTargetClass(const TString &classname)
Set the target class of this rule (i.e. the in memory class).
const char * Data() const
Definition: TString.h:349
void(* DesFunc_t)(void *)
Definition: Rtypes.h:151
void SetAttributes(const TString &attributes)
Set the attributes code of this rule.
const type_info & fInfo
DelArrFunc_t GetDeleteArray() const
ResetAfterMergeFunc_t fResetAfterMerge
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:33
UChar_t mod R__LOCKGUARD2(gSrvAuthenticateMutex)
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
Definition: TROOT.cxx:2469
void SetStreamerFunc(ClassStreamerFunc_t strm)
Set a wrapper/accessor function around this class custom streamer.
Definition: TClass.cxx:6452
void SetReadRules(const std::vector< ROOT::Internal::TSchemaHelper > &rules)
void SetDirectoryAutoAdd(DirAutoAdd_t dirAutoAdd)
TClass * fClass
pointer to the foreign object
TClass * IsA(const void *obj)
const std::vector< ROOT::Internal::TSchemaHelper > & GetReadRules() const
TCollection * GetListOfClasses() const
Definition: TROOT.h:215
Short_t SetStreamer(ClassStreamerFunc_t)
TClass *(* DictFuncPtr_t)()
Definition: Rtypes.h:75
Int_t SetDeclFile(const char *file, Int_t line)
void SetSource(const TString &source)
Set the list of source members.
void(* ClassConvStreamerFunc_t)(TBuffer &, void *, const TClass *)
Definition: Rtypes.h:68
const char * GetDeclFileName() const
void SetSourceClass(const TString &classname)
Set the source class of this rule (i.e. the onfile class).
Short_t AdoptStreamer(TClassStreamer *)
void SetInclude(const TString &include)
Set the comma separated list of header files to include to be able to compile this rule...
std::vector< ROOT::Internal::TSchemaHelper > fReadRawRules
R__EXTERN TROOT * gROOTLocal
Definition: TROOT.h:337
const Internal::TInitBehavior * fAction
void SetNew(ROOT::NewFunc_t newFunc)
Install a new wrapper around 'new'.
Definition: TClass.cxx:6515
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
void *(* NewArrFunc_t)(Long_t size, void *arena)
Definition: Rtypes.h:148
void SetDestructor(ROOT::DesFunc_t destructorFunc)
Install a new wrapper around the destructor.
Definition: TClass.cxx:6547
Int_t SetImplFile(const char *file, Int_t line)
void SetTarget(const TString &target)
Set the target member of this rule (i.e. the in memory data member).
TClassStreamer * fStreamer
void AdoptCollectionStreamerInfo(Detail::TCollectionProxyInfo *)
void SetDirectoryAutoAdd(ROOT::DirAutoAdd_t dirAutoAddFunc)
Install a new wrapper around the directory auto add function.
Definition: TClass.cxx:6558
void SetCode(const TString &code)
Set the source code of this rule.
Detail::TCollectionProxyInfo * fCollectionStreamerInfo
void(* ResetAfterMergeFunc_t)(void *, TFileMergeInfo *)
Definition: Rtypes.h:154
ClassStreamerFunc_t fStreamerFunc
Detail::TCollectionProxyInfo * GetCollectionProxyInfo() const
short Short_t
Definition: RtypesCore.h:35
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:51
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:81
Bool_t SetChecksum(const TString &checksum)
Set the checksum string - returns kFALSE if the format is incorrect.
void(* DirAutoAdd_t)(void *, TDirectory *)
Definition: Rtypes.h:152
void Warning(const char *location, const char *msgfmt,...)
TVirtualIsAProxy * fIsA
void SetDestructor(DesFunc_t destructorFunc)
void SetCollectionProxy(const ROOT::Detail::TCollectionProxyInfo &)
Create the collection proxy object (and the streamer object) from using the information in the TColle...
Definition: TClass.cxx:5783
virtual void Unregister(const char *classname) const =0
std::vector< ROOT::Internal::TSchemaHelper > fReadRules
void(* ReadFuncPtr_t)(char *, TVirtualObject *)
Definition: TSchemaRule.h:42
const char * GetClassName() const
void SetReadFunctionPointer(ReadFuncPtr_t ptr)
Set the pointer to the function to be run for the rule (if it is a read rule).
TVirtualCollectionProxy * fCollectionProxy
DelFunc_t GetDelete() const
double func(double *x, double *p)
Definition: stressTF1.cxx:213
void SetDeleteArray(DelArrFunc_t deleteArrayFunc)
void SetEmbed(Bool_t embed)
Set whether this rule should be save in the ROOT file (if true)
virtual UInt_t GetUniqueID() const
Return the unique object id.
Definition: TObject.cxx:433
void Init(Int_t pragmabits)
void SetNew(NewFunc_t newFunc)
NewArrFunc_t GetNewArray() const
void SetNewArray(NewArrFunc_t newArrayFunc)
void AddImplFile(const char *filename, int line)
Definition: TClass.cxx:1858
void(* DelFunc_t)(void *)
Definition: Rtypes.h:149
void SetResetAfterMerge(ResetAfterMergeFunc_t)
const ROOT::Detail::TSchemaRuleSet * GetSchemaRules() const
Return the set of the schema rules if any.
Definition: TClass.cxx:1838
void SetMerge(ROOT::MergeFunc_t mergeFunc)
Install a new wrapper around 'Merge'.
Definition: TClass.cxx:6499
DesFunc_t GetDestructor() const
void SetResetAfterMerge(ROOT::ResetAfterMergeFunc_t resetFunc)
Install a new wrapper around 'ResetAfterMerge'.
Definition: TClass.cxx:6507
const Bool_t kTRUE
Definition: Rtypes.h:91
TNamed * RegisterClassTemplate(const char *name, const char *file, Int_t line)
Global function to register the implementation file and line of a class template (i.e.
TObject * obj
virtual void Register(const char *cname, Version_t id, const type_info &info, DictFuncPtr_t dict, Int_t pragmabits) const =0
void(* DelArrFunc_t)(void *)
Definition: Rtypes.h:150
void SetRuleType(RuleType_t type)
Set the type of the rule.
void *(* NewFunc_t)(void *)
Definition: Rtypes.h:147
void SetNewArray(ROOT::NewArrFunc_t newArrayFunc)
Install a new wrapper around 'new []'.
Definition: TClass.cxx:6523
void AdoptCollectionProxyInfo(Detail::TCollectionProxyInfo *)
virtual TClass * CreateClass(const char *cname, Version_t id, const type_info &info, TVirtualIsAProxy *isa, const char *dfil, const char *ifil, Int_t dl, Int_t il) const =0
void CopyCollectionProxy(const TVirtualCollectionProxy &)
Copy the argument.
Definition: TClass.cxx:2386
void SetReadRawRules(const std::vector< ROOT::Internal::TSchemaHelper > &rules)