// @(#)root/meta:$Id$
// Author: Rene Brun   04/02/95

/*************************************************************************
 * 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_TMethodArg
#define ROOT_TMethodArg


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TMethodArg                                                           //
//                                                                      //
// Dictionary interface for a method argument.                          //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

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

#include "TDataMember.h"

class TFunction;
class TMethod;

class TMethodArg : public TDictionary {

friend class TMethod;

private:
   TMethodArg(const TMethodArg&);    // Not implemented
   TMethodArg& operator=(const TMethodArg&);    // Not implemented

   MethodArgInfo_t   *fInfo;         //pointer to CINT method argument info
   TFunction         *fMethod;       //pointer to the method or global function
   TDataMember       *fDataMember;   //TDataMember pointed by this arg,to get values and options from.

public:
   TMethodArg(MethodArgInfo_t *info = 0, TFunction *method = 0);
   virtual       ~TMethodArg();
   const char    *GetDefault() const;
   TFunction     *GetMethod() const { return fMethod; }
   const char    *GetTypeName() const;
   const char    *GetFullTypeName() const;
   std::string    GetTypeNormalizedName() const;
   Long_t         Property() const;

   TDataMember   *GetDataMember() const;
   TList         *GetOptions() const;

   void           Update(MethodArgInfo_t *info);

   ClassDef(TMethodArg,0)  //Dictionary for a method argument
};

#endif

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