#include "TMethodBrowsable.h"

# TMethodBrowsable

class description - source file - inheritance tree (.pdf)

## class TMethodBrowsable : public TNamed

| Inheritance Chart:

`TObject`

<-

`TNamed`

<-

`TMethodBrowsable`

        private:

          void GetScope(TString& scope)

        public:

                              TMethodBrowsable(TBranchElement* be, TMethod* m, TMethodBrowsable* parent = 0)
                              TMethodBrowsable(const TMethodBrowsable&)
                              ~TMethodBrowsable()
                 virtual void Browse(TBrowser* b)
               static TClass* Class()
          virtual const char* GetIconName() const
                static TList* GetMethodBrowsables(TBranchElement* be, TClass* cl, TMethodBrowsable* parent = 0)
              virtual TClass* IsA() const
               virtual Bool_t IsFolder() const
                static Bool_t IsMethodBrowsable(TMethod* m)
            TMethodBrowsable& operator=(const TMethodBrowsable&)
                 virtual void ShowMembers(TMemberInspector& insp, char* parent)
                 virtual void Streamer(TBuffer& b)
                         void StreamerNVirtual(TBuffer& b)

### Data Members

        private:

            TBranchElement* fBranchElement    pointer to the branch element representing the top object
          TMethodBrowsable* fParent           parent method if this method is member of a returned class
                   TMethod* fMethod           pointer to a method
                    TClass* fReturnClass      pointer to TClass representing return type
                     TList* fReturnLeafs      pointer to return type's leafs
                     Bool_t fReturnIsPointer  return type is pointer to class

## Class Description

     TMethodBrowsable

     A helper object to browse methods (see
     TBranchElement::GetBrowsableMethods)

TMethodBrowsable(TBranchElement* be, TMethod* m, TMethodBrowsable* parent /* =0 */): fBranchElement(be), fParent(parent), fMethod(m), fReturnClass(0), fReturnLeafs(0), fReturnIsPointer(kFALSE)

     standard constructor.
     Links a TBranchElement with a TMethod, allowing the TBrowser to
     Browser simple methods.

     The c'tor sets the name for a method "Class::Method(params) const"
     to "Method(params)", title to TMethod::GetPrototype

void Browse(TBrowser *b)

     Calls TTree::Draw on the method if return type is not a class;
     otherwise expands returned object's "folder"

TList* GetMethodBrowsables(TBranchElement* be, TClass* cl, TMethodBrowsable* parent /* =0 */)

     Given a class, this methods returns a list of TMethodBrowsables
     for the class and its base classes.
     This list has to be deleted by the caller!

void GetScope(TString & scope)

     Returns the full name for TTree::Draw to draw *this.
     Recursively appends, starting form the top TBranchElement,
     all method names with proper reference operators (->, .)
     depending on fReturnIsPointer.

Bool_t IsMethodBrowsable(TMethod* m)

     A TMethod is browsable if it is const, public and not pure virtual,
     if does not have any parameter without default value, and if it has
     a (non-void) return value.
     A method called *, Get*, or get* will not be browsable if there is a
     persistent data member called f*, _*, or m*, as data member access is
     faster than method access. Examples: if one of fX, _X, or mX is a
     persistent data member, the methods GetX(), getX(), and X() will not
     be browsable.

### Inline Functions

                         void ~TMethodBrowsable()
                  const char* GetIconName() const
                       Bool_t IsFolder() const
                      TClass* Class()
                      TClass* IsA() const
                         void ShowMembers(TMemberInspector& insp, char* parent)
                         void Streamer(TBuffer& b)
                         void StreamerNVirtual(TBuffer& b)
             TMethodBrowsable TMethodBrowsable(const TMethodBrowsable&)
            TMethodBrowsable& operator=(const TMethodBrowsable&)

Author: Axel Naumann 14/10/2004
Last update: root/tree:$Name: $:$Id: TMethodBrowsable.cxx,v 1.5 2004/12/17 07:20:54 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *