Logo ROOT   6.18/05
Reference Guide
TFunctionTemplate.cxx
Go to the documentation of this file.
1// @(#)root/meta:$Id$
2// Author: Philippe Canal November 2013.
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, 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/** \class TFunctionTemplate
13Dictionary for function template
14This class describes one single function template.
15*/
16
17#include "TFunctionTemplate.h"
18#include "TInterpreter.h"
19#include "TClass.h"
20#include "TROOT.h"
21
23
24////////////////////////////////////////////////////////////////////////////////
25/// Default TFunctionTemplate ctor.
26
28 fInfo(info), fClass(cl)
29{
30 if (fInfo) {
33 }
34}
35
36////////////////////////////////////////////////////////////////////////////////
37/// Copy operator.
38
40{
41 if (orig.fInfo) {
43 } else
44 fInfo = 0;
45 fClass = orig.fClass;
46}
47
48////////////////////////////////////////////////////////////////////////////////
49/// Assignment operator.
50
52{
53 if (this != &rhs) {
55 if (rhs.fInfo) {
59 } else
60 fInfo = 0;
61 }
62 return *this;
63}
64
65////////////////////////////////////////////////////////////////////////////////
66/// TFunctionTemplate dtor deletes adopted CINT FuncTempInfo.
67
69{
71}
72
73////////////////////////////////////////////////////////////////////////////////
74/// Clone method.
75
76TObject *TFunctionTemplate::Clone(const char *newname) const
77{
78 TNamed *newobj = new TFunctionTemplate(*this);
79 if (newname && strlen(newname)) newobj->SetName(newname);
80 return newobj;
81}
82
83////////////////////////////////////////////////////////////////////////////////
84/// Return true if this function template object is pointing to a currently
85/// loaded function. If a function is unloaded after the TFunction
86/// is created, the TFunction will be set to be invalid.
87
89{
90 // Register the transaction when checking the validity of the object.
92 // Only for global functions. For data member functions TMethod does it.
93 DeclId_t newId = gInterpreter->GetFunction(0, fName);
94 if (newId) {
95 FuncTempInfo_t *info = gInterpreter->FuncTempInfo_Factory(newId);
96 Update(info);
97 }
98 return newId != 0;
99 }
100 return fInfo != 0;
101}
102
103////////////////////////////////////////////////////////////////////////////////
104/// Number of function arguments.
105
107{
109}
110
111////////////////////////////////////////////////////////////////////////////////
112/// Number of function optional (default) arguments.
113
115{
116 // FIXME: when unload this is an over-estimate.
118}
119
120////////////////////////////////////////////////////////////////////////////////
121/// Get property description word. For meaning of bits see EProperty.
122
124{
126}
127
128////////////////////////////////////////////////////////////////////////////////
129/// Get the properties not already defined in Property.See TDictionary's EFunctionProperty.
130
132{
134}
135
136////////////////////////////////////////////////////////////////////////////////
137
139{
140 return gInterpreter->GetDeclId(fInfo);
141}
142
143////////////////////////////////////////////////////////////////////////////////
144/// Update the TFunctionTemplate to reflect the new info.
145///
146/// This can be used to implement unloading (info == 0) and then reloading
147/// (info being the 'new' decl address).
148
150{
151 if (info == 0) {
153 fInfo = 0;
154 return kTRUE;
155 } else {
157 fInfo = info;
159 return kTRUE;
160 }
161}
162
unsigned int UInt_t
Definition: RtypesCore.h:42
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassImp(name)
Definition: Rtypes.h:365
R__EXTERN TInterpreter * gCling
Definition: TInterpreter.h:554
#define gInterpreter
Definition: TInterpreter.h:553
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
This class defines an abstract interface that must be implemented by all classes that contain diction...
Definition: TDictionary.h:159
Bool_t UpdateInterpreterStateMarker()
the Cling ID of the transaction that last updated the object
const void * DeclId_t
Definition: TDictionary.h:206
Dictionary for function template This class describes one single function template.
virtual ~TFunctionTemplate()
TFunctionTemplate dtor deletes adopted CINT FuncTempInfo.
virtual bool Update(FuncTempInfo_t *info)
Update the TFunctionTemplate to reflect the new info.
virtual TObject * Clone(const char *newname="") const
Clone method.
DeclId_t GetDeclId() const
Long_t Property() const
Get property description word. For meaning of bits see EProperty.
FuncTempInfo_t * fInfo
UInt_t GetTemplateMinReqArgs() const
Number of function optional (default) arguments.
virtual Bool_t IsValid()
Return true if this function template object is pointing to a currently loaded function.
TFunctionTemplate & operator=(const TFunctionTemplate &rhs)
Assignment operator.
UInt_t GetTemplateNargs() const
Number of function arguments.
TFunctionTemplate(FuncTempInfo_t *info, TClass *cl)
Default TFunctionTemplate ctor.
Long_t ExtraProperty() const
Get the properties not already defined in Property.See TDictionary's EFunctionProperty.
virtual Long_t FuncTempInfo_Property(FuncTempInfo_t *) const =0
virtual Long_t FuncTempInfo_ExtraProperty(FuncTempInfo_t *) const =0
virtual UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t *) const =0
virtual UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t *) const =0
virtual FuncTempInfo_t * FuncTempInfo_FactoryCopy(FuncTempInfo_t *) const =0
virtual void FuncTempInfo_Name(FuncTempInfo_t *, TString &name) const =0
virtual void FuncTempInfo_Delete(FuncTempInfo_t *) const =0
virtual void FuncTempInfo_Title(FuncTempInfo_t *, TString &title) const =0
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
TString fTitle
Definition: TNamed.h:33
TString fName
Definition: TNamed.h:32
virtual void SetName(const char *name)
Set the name of the TNamed.
Definition: TNamed.cxx:140
Mother of all ROOT objects.
Definition: TObject.h:37