Logo ROOT  
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
22
23////////////////////////////////////////////////////////////////////////////////
24/// Default TFunctionTemplate ctor.
25
27 fInfo(info), fClass(cl)
28{
29 if (fInfo) {
32 }
33}
34
35////////////////////////////////////////////////////////////////////////////////
36/// Copy operator.
37
39{
40 if (orig.fInfo) {
42 } else
43 fInfo = nullptr;
44 fClass = orig.fClass;
45}
46
47////////////////////////////////////////////////////////////////////////////////
48/// Assignment operator.
49
51{
52 if (this != &rhs) {
54 if (rhs.fInfo) {
58 } else
59 fInfo = nullptr;
60 }
61 return *this;
62}
63
64////////////////////////////////////////////////////////////////////////////////
65/// TFunctionTemplate dtor deletes adopted CINT FuncTempInfo.
66
68{
70}
71
72////////////////////////////////////////////////////////////////////////////////
73/// Clone method.
74
75TObject *TFunctionTemplate::Clone(const char *newname) const
76{
77 TNamed *newobj = new TFunctionTemplate(*this);
78 if (newname && strlen(newname)) newobj->SetName(newname);
79 return newobj;
80}
81
82////////////////////////////////////////////////////////////////////////////////
83/// Return true if this function template object is pointing to a currently
84/// loaded function. If a function is unloaded after the TFunction
85/// is created, the TFunction will be set to be invalid.
86
88{
89 // Register the transaction when checking the validity of the object.
91 // Only for global functions. For data member functions TMethod does it.
92 DeclId_t newId = gInterpreter->GetFunction(nullptr, fName);
93 if (newId) {
94 FuncTempInfo_t *info = gInterpreter->FuncTempInfo_Factory(newId);
95 Update(info);
96 }
97 return newId != nullptr;
98 }
99 return fInfo != nullptr;
100}
101
102////////////////////////////////////////////////////////////////////////////////
103/// Number of function arguments.
104
106{
108}
109
110////////////////////////////////////////////////////////////////////////////////
111/// Number of function optional (default) arguments.
112
114{
115 // FIXME: when unload this is an over-estimate.
117}
118
119////////////////////////////////////////////////////////////////////////////////
120/// Get property description word. For meaning of bits see EProperty.
121
123{
125}
126
127////////////////////////////////////////////////////////////////////////////////
128/// Get the properties not already defined in Property.See TDictionary's EFunctionProperty.
129
131{
133}
134
135////////////////////////////////////////////////////////////////////////////////
136
138{
139 return gInterpreter->GetDeclId(fInfo);
140}
141
142////////////////////////////////////////////////////////////////////////////////
143/// Update the TFunctionTemplate to reflect the new info.
144///
145/// This can be used to implement unloading (info == 0) and then reloading
146/// (info being the 'new' decl address).
147
149{
150 if (info == nullptr) {
152 fInfo = nullptr;
153 return kTRUE;
154 } else {
156 fInfo = info;
158 return kTRUE;
159 }
160}
161
unsigned int UInt_t
Definition: CPyCppyy.h:44
long Long_t
Definition: CPyCppyy.h:50
Cppyy::TCppType_t fClass
bool Bool_t
Definition: RtypesCore.h:63
const Bool_t kTRUE
Definition: RtypesCore.h:100
#define ClassImp(name)
Definition: Rtypes.h:364
R__EXTERN TInterpreter * gCling
Definition: TInterpreter.h:561
#define gInterpreter
Definition: TInterpreter.h:560
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
This class defines an abstract interface that must be implemented by all classes that contain diction...
Definition: TDictionary.h:167
Bool_t UpdateInterpreterStateMarker()
the Cling ID of the transaction that last updated the object
const void * DeclId_t
Definition: TDictionary.h:223
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 FuncTempInfo_t * FuncTempInfo_FactoryCopy(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 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