Hello ROOTers, I'm new to the list and have what might be a trivial question. I am attempting to use the MATHLIB function RASLGF in ROOT. I've downloaded the TF77 tarball from the HOWTO page and added the function I need to it. The module makes without error. When I try to test the function, however, I get the error- Error: class,struct,union or type $TF77 not defined I can find no significant differences between my code and the example included in the tarball, which runs correctly. Below are the relevant files: /* TF77.cxx * *F77 functions to be built into the root.exe executable. * */ #include "TF77.hxx" #include <stdio.h> #include <stream.h> #include "TROOT.h" #include "Api.h" ClassImp(TF77) namespace F77 { extern "C" { /* Define CERNLIB F77 common blocks for the different OSs, if needed. */ #if 0 /* define 1 if CERNLIB F77 commons are needed, 0 otherwise */ #define PAWC_SIZE 2000000 #ifndef WIN32 int pawc_[PAWC_SIZE]; int quest_[100]; int hcbits_[37]; int hcbook_[51]; int rzcl_[11]; #else /* WIN32 */ #define pawc_ PAWC #define quest_ QUEST #define hcbits_ HCBITS #define hcbook_ HCBOOK #define rzcl_ RZCL extern int pawc_[PAWC_SIZE]; extern int quest_[100]; extern int hcbits_[37]; extern int hcbook_[51]; extern int rzcl_[11]; #endif /* WIN32 */ #endif /* CERNLIB F77 commons are needed */ }/* end of extern "C" */ }/* end of namespace F77 */ //Legendre Polynomials - MATHLIB C330 void TF77::raslgf(Int_t &mode, Float_t &x, Int_t &m, Int_t &nl, Float_t &p){ F77::raslgf_(mode, x, m, nl, p);//call the CERNLIB FORTRAN function } // Default ctor used to initialize resources used by TF77 // (i.e. FORTRAN common blocks, ...). TF77::TF77() { if (gF77 != 0) delete gF77; gF77 = this; // Begin of code that is needed to initialize the F77 interface. // End of code that is needed to initialize the F77 interface. } // Default dtor used to clean up and free resources used by TF77 // (i.e. FORTRAN common blocks, ...). TF77::~TF77() { if (gF77 != this) return; gF77 = (TF77 *)0; // Begin of code that is needed to de-initialize the F77 interface. // End of code that is needed to de-initialize the F77 interface. } // Creation of the single, global instance of the TF77 object. TF77 *gF77 = (TF77 *)0; // First make sure gF77 is 0, then ... TF77 *gF77Origin = new TF77(); // ... create the single instance. /* end of file TF77.cxx */ --------------------------------------------------------------------------------------------- //TF77.hxx //TF77 header file #ifndef TF77_HXX #define TF77_HXX #if !defined (__CINT__) || defined (__MAKECINT__) #include "Rtypes.h" #endif #ifndef __CINT__ namespace F77 { extern "C" { /* The interface to F77 functions and subroutines. */ #ifndef WIN32 #define type_of_call #define DEFCHAR const char* #define PASSCHAR(string) string #else /* WIN32 */ #define type_of_call _stdcall #define DEFCHAR const char*, const int #define PASSCHAR(string) string, strlen(string) #define raslgf_ RASLGF #endif /* WIN32 */ extern void type_of_call raslgf_(Int_t &mode, Float_t &x, Int_t &m, Int_t &nl, Float_t &p); } /* end of extern "C" */ } /* end of namespace F77 */ #endif /* __CINT__ */ class TF77 { public: static void raslgf(Int_t &mode, Float_t &x, Int_t &m, Int_t &nl, Float_t &p); public: TF77(); // Default ctor used to intialize F77 resources virtual ~TF77(); // Default dtor used to clean up and free F77 resources ClassDef(TF77,0) //C++ glue code for CERNLIB FORTRAN functions }; R__EXTERN TF77 *gF77; // Single, global instance of the TF77 object #endif /* TF77_HXX */ /* end of file TF77.hxx */ ---------------------------------------------------------------------------------------------- //TF77LinkDef.h #ifdef __CINT__ #pragma link off all typedefs; #pragma link off all globals; #pragma link off all functions; #pragma link off all classes; #pragma link C++ global gF77; #pragma link C++ class TF77; #endif /* End of file TF77LinkDef.h */ ---------------------------------------------------------------------------------------------- //leg_test.cxx //ROOT macro testing RASLGF (MATHLIB C330) #include <stdio.h> #include <math.h> #include "TROOT.h" #include "TCanvas.h" #include "TPad.h" #include "TF1.h" #include "TGraph.h" #if !defined (__CINT__) || defined (__MAKECINT__) #include "Api.h" #endif #include "TF77.hxx" void leg_test(void) { int i; float x=.5; int mode=2; int m=0; int nl=1; float p[2]; gROOT->Reset(); TF77::raslgf(mode,x,m,nl,p); cout<<"P00(.5)= "<<p[0]<<endl; cout<<"P10(.5)= "<<p[1]<<endl; } --------------------------------------------------------------------------------------------- If anyone could help me figure this out, it would be much appreciated. Thanks in advance, Dan
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:01 MET