/* /% C++ %/ */ /*********************************************************************** * cint (C/C++ interpreter) ************************************************************************ * Header file Api.h ************************************************************************ * Description: * Extended Run Time Type Identification API * -I$(CINTSYSDIR) -I$(CINTSYSDIR)/src must be given at compile time ************************************************************************ * Copyright(c) 1995~1999 Masaharu Goto * * For the licensing terms see the file COPYING * ************************************************************************/ #ifndef G__API_H #define G__API_H /********************************************************************* * include header files *********************************************************************/ #ifndef G__API #define G__API #endif #include "G__ci.h" #ifdef __MAKECINT__ #pragma link off all classes; #pragma link off all functions; #pragma link off all globals; #pragma link off all typedefs; #endif #define G__INFO_BUFLEN 50 /* #define G__INFO_TITLELEN 256 */ #define G__INFO_TITLELEN G__ONELINE #ifndef G__PROPERTY_H #include "Property.h" #endif #ifndef G__CLASSINFO_H #include "Class.h" #endif #ifndef G__BaseClassInfo_H #include "BaseCls.h" #endif #ifndef G__TYPEINFOX_H #include "Type.h" #endif #ifndef G__METHODINFO_H #include "Method.h" #endif #ifndef G__METHODARGINFO_H #include "MethodAr.h" #endif #ifndef G__DATAMEMBER_H #include "DataMbr.h" #endif #ifndef G__CALLFUNC_H #include "CallFunc.h" #endif #ifndef G__TYPEDEFINFO_H #include "Typedf.h" #endif #ifndef G__TOKENINFO_H #include "Token.h" #endif #include #include #ifndef __CINT__ struct G__includepath; #endif extern "C" { #ifndef __CINT__ G__EXPORT #endif int G__Lsizeof(const char *typenamein); } struct G__ConstStringList; struct G__Preprocessfilekey; struct G__Deffuncmacro; struct G__Definedtemplateclass; struct G__Definetemplatefunc; /********************************************************************* * scratch upto dictionary position *********************************************************************/ struct G__dictposition { /* global variable table position */ struct G__var_array *var; int ig15; /* struct tagnum */ int tagnum; /* const string table */ struct G__ConstStringList *conststringpos; /* typedef table */ int typenum; /* global function table position */ struct G__ifunc_table *ifunc; int ifn; /* include path */ struct G__includepath *ipath; /* shared library file */ int allsl; /* preprocessfilekey */ struct G__Preprocessfilekey *preprocessfilekey; /* input file */ int nfile; /* macro table */ struct G__Deffuncmacro *deffuncmacro; /* template class */ struct G__Definedtemplateclass *definedtemplateclass; /* function template */ struct G__Definetemplatefunc *definedtemplatefunc; int nactives; /* number of 'active' classes */ }; namespace Cint { /********************************************************************* * $xxx object resolution function, pointer to a class object * * Usage: * * void YourGetObject(char *name,G__ClassInfo *type) { * void *p; * // Whatever you want to fill type and pointetr to the object info * return(p); * } * * ROOT_Initialization() { * // set pointer to yourown interface method * G__InitGetSpecialObject(YourGetObject); * } *********************************************************************/ typedef void *(*G__pMethodSpecialObject)(char *item,G__ClassInfo *typeinfo ,void** pptr,void** ppdict); #ifndef __CINT__ G__EXPORT #endif void G__InitGetSpecialObject(G__pMethodSpecialObject pmethod); /********************************************************************* * $xxx object resolution function, Generic *********************************************************************/ typedef void (*G__pMethodSpecialValue)(char *item,G__TypeInfo *typeinfo ,long *pl,double *pd,void** pptr ,void** ppdict); #ifndef __CINT__ G__EXPORT #endif void G__InitGetSpecialValue(G__pMethodSpecialValue pmethod); #ifndef __CINT__ G__EXPORT #endif int G__SetGlobalcomp(char *funcname,char *param,int globalcomp); // Method.cxx int G__SetForceStub(char *funcname,char *param); // Method.cxx #ifndef __CINT__ G__EXPORT #endif int G__ForceBytecodecompilation(char *funcname,char *param); // Method.cxx /********************************************************************* * Feedback routine in case tagnum for a class changes (in case the * dictionary of a shared lib is being re-initialized). *********************************************************************/ typedef void (*G__pMethodUpdateClassInfo)(char *item,long tagnum); #ifndef __CINT__ G__EXPORT #endif void G__InitUpdateClassInfo(G__pMethodUpdateClassInfo pmethod); #ifndef __CINT__ G__EXPORT #endif void* G__new_interpreted_object(int size); #ifndef __CINT__ G__EXPORT #endif void G__delete_interpreted_object(void* p); /********************************************************************* * Generate dictionary. *********************************************************************/ typedef int (*G__pGenerateDictionary)(const std::string &className,const std::vector &headers, const std::vector &fwdDecls, const std::vector &unknown); #ifndef __CINT__ G__EXPORT #endif void G__InitGenerateDictionary( G__pGenerateDictionary gdict ); #ifndef __CINT__ G__EXPORT #endif G__pGenerateDictionary G__GetGenerateDictionary(); /********************************************************************* * G__SourceFileInfo *********************************************************************/ class #ifndef __CINT__ G__EXPORT #endif G__SourceFileInfo { public: G__SourceFileInfo(): filen(0) { Init(); } G__SourceFileInfo(int filenin): filen(filenin) { } G__SourceFileInfo(const char* fname): filen(0) { Init(fname); } ~G__SourceFileInfo() { } void Init() { filen = -1; } void Init(const char* fname); const char *Name(); const char *Prepname(); FILE* fp(); int MaxLine(); G__SourceFileInfo& IncludedFrom(); long Property(); int IsValid(); int Next(); static int SerialNumber(); private: int filen; }; /********************************************************************* * G__IncludePathInfo *********************************************************************/ class #ifndef __CINT__ G__EXPORT #endif G__IncludePathInfo { public: G__IncludePathInfo(): p(NULL) { Init(); } #ifndef __CINT__ G__IncludePathInfo(const G__IncludePathInfo& ipf): p(ipf.p) {} #endif ~G__IncludePathInfo() { } void Init() { p=(struct G__includepath*)NULL; } const char *Name(); long Property(); int IsValid(); int Next(); private: G__IncludePathInfo& operator=(const G__IncludePathInfo&); #ifndef __CINT__ struct G__includepath *p; #endif }; #ifdef G__EXCEPTIONWRAPPER /********************************************************************* * G__ExceptionWrapper *********************************************************************/ int G__ExceptionWrapper(G__InterfaceMethod funcp ,G__value* result7 ,char* funcname ,struct G__param *libp ,int hash); #endif unsigned long G__long_random(unsigned long limit); /********************************************************************* * External readline interface *********************************************************************/ typedef const char* (*G__pGetline_t)(const char* prompt); typedef void (*G__pHistadd_t)(const char* line); #ifndef __CINT__ G__EXPORT #endif G__pGetline_t G__GetGetlineFunc(); #ifndef __CINT__ G__EXPORT #endif G__pHistadd_t G__GetHistaddFunc(); #ifndef __CINT__ G__EXPORT #endif void G__SetGetlineFunc(G__pGetline_t glfcn, G__pHistadd_t hafcn); } // namespace Cint using namespace Cint; #ifdef __MAKECINT__ #pragma link off class $G__value; #pragma link off class $G__COMPLETIONLIST; #pragma link off class $G__linked_taginfo; #pragma link off class G__includepath; #pragma link C++ namespace Cint; #pragma link C++ nestedclasses; #pragma link off namespace Cint::Internal; #endif #endif