// @(#)root/meta:$Id$
// Author: Fons Rademakers   07/02/97

/*************************************************************************
 * Copyright (C) 1995-2000, 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_TFunction
#define ROOT_TFunction


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TFunction                                                            //
//                                                                      //
// Dictionary of global functions.                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TDictionary
#include "TDictionary.h"
#endif

class TMethodCall;

class TFunction : public TDictionary {

friend class TCling;
friend class TMethodCall;

protected:
   MethodInfo_t   *fInfo;            //pointer to Interpreter function info
   TString         fMangledName;     //Mangled name as determined by CINT.
   TString         fSignature;       //string containing function signature
   TList          *fMethodArgs;      //list of function arguments

   virtual void    CreateSignature();

public:
   TFunction(MethodInfo_t *info = 0);
   TFunction(const TFunction &orig);
   TFunction& operator=(const TFunction &rhs);
   virtual            ~TFunction();
   virtual TObject    *Clone(const char *newname="") const;
   virtual const char *GetMangledName() const;
   virtual const char *GetPrototype() const;
   const char         *GetSignature();
   const char         *GetReturnTypeName() const;
   std::string         GetReturnTypeNormalizedName() const;
   TList              *GetListOfMethodArgs();
   Int_t               GetNargs() const;
   Int_t               GetNargsOpt() const;
   DeclId_t            GetDeclId() const;
   void               *InterfaceMethod() const;
   virtual Bool_t      IsValid();
   virtual void        Print(Option_t *option="") const;
   Long_t              Property() const;
   Long_t              ExtraProperty() const;
   virtual bool        Update(MethodInfo_t *info);

   virtual void        ls(Option_t *option="") const;

   ClassDef(TFunction,0)  //Dictionary for global function
};

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