RE:#pragma link MACRO function

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Tue Sep 21 1999 - 13:26:05 MEST


Hello,

I'll post this answer to roottalk. The question is how to use following
pragma statements which are not described in ROOT documentation.

  #pragma link MACRO function [funcname];
  #pragma link [C++|C|off] nestedclass;
  #pragma link [C++|C|off] nestedtypedef;

1) #pragma link MACRO [funcname];
  This pragma behaves the same as '#pragma link C++ function [funcname];'
  except it does not refer to function pointer. Consider following case,

   double func(double x) { return(x*x); }
   #define mac(x)  (x*x)

  You can refer 'func' as pointer to function, but can not do so for
  'mac'. '#pragma link MACRO function [funcname];' prevents this. 
  Above case, following LinkDef statements are recommended.

   #pragma link C++ function func;
   #pragma link MACRO function mac;

2) #pragma link [C++|C|off] [nestedclass|nestedtypedef];
  THese pragma statements turns on/off dictionary generation for nested
  classes and typedefs. For example,

   class A {
    public:
     class B {
       int b;
     };
     typedef int Int_t;
   };

  Without '#pragma link C++ nestedclass;'  A::B is not visible from
  the interpreter. Likewise, nestedtypedef for Int_t. If you need to
  access these types, following LinkDef statements are needed.

   #pragma link C++ nestedclass;
   #pragma link C++ nestedtypedef;

  This is documented in cint source package doc/ref.txt.

Thank you
Masaharu Goto


>Dear Masaharu,  one more question. 
>I see in the cint code but  never saw in ROOT
>that cint can handle MACRO functions, nestedclasses. 
>  Could do you make example how to use it?
>Thanks. With best regards,             Valery



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:39 MET