/* /% 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) 1991~1996 [hp] Hewlett Packard Japan, All rights reserved * Author Masaharu Goto (gotom@jpn.hp.com) * Copyright(c) 1995~1998 Masaharu Goto (MXJ02154@niftyserve.or.jp) * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Japan Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. ************************************************************************/ #ifndef G__API_H #define G__API_H #include /********************************************************************* * include header files *********************************************************************/ #define G__API #define G__CINTBODY /* may not be needed */ /*KEEP,G__ci.*/ #include "G__ci.h" /*KEND.*/ #ifdef __MAKECINT__ #pragma link off all classes; #endif #define G__INFO_BUFLEN 50 #define G__INFO_TITLELEN 256 /*KEEP,Property.*/ #include "Property.h" /*KEEP,Class.*/ #include "Class.h" /*KEEP,BaseCls.*/ #include "BaseCls.h" /*KEEP,Type.*/ #include "Type.h" /*KEEP,Method.*/ #include "Method.h" /*KEEP,MethodAr.*/ #include "MethodAr.h" /*KEEP,DataMbr.*/ #include "DataMbr.h" /*KEEP,CallFunc.*/ #include "CallFunc.h" /*KEEP,Typedf.*/ #include "Typedf.h" /*KEEP,Token.*/ #include "Token.h" /*KEND.*/ /********************************************************************* * $xxx object resolution function, pointer to a class object * * Usage: * * extern "C" 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); * } *********************************************************************/ extern "C" { #if !defined(G__OLDIMPLEMENTATION481) typedef void *(*G__pMethodSpecialObject)(char *item,G__ClassInfo *typeinfo ,void** pptr,void** ppdict); #elif !defined(G__OLDIMPLEMENTATION455) typedef void *(*G__pMethodSpecialObject)(char *item,G__ClassInfo *typeinfo ,void* ptr); #else typedef void *(*G__pMethodSpecialObject)(char *item,G__ClassInfo *typeinfo); #endif void G__InitGetSpecialObject(G__pMethodSpecialObject pmethod); } /********************************************************************* * $xxx object resolution function, Generic *********************************************************************/ extern "C" { #if !defined(G__OLDIMPLEMENTATION481) typedef void (*G__pMethodSpecialValue)(char *item,G__TypeInfo *typeinfo ,long *pl,double *pd,void** pptr ,void** ppdict); #elif !defined(G__OLDIMPLEMENTATION455) typedef void (*G__pMethodSpecialValue)(char *item,G__TypeInfo *typeinfo ,long *pl,double *pd,void* ptr); #else typedef void (*G__pMethodSpecialValue)(char *item,G__TypeInfo *typeinfo ,long *pl,double *pd); #endif void G__InitGetSpecialValue(G__pMethodSpecialValue pmethod); } #ifndef G__OLDIMPLEMENTATION1207 /********************************************************************* * Feedback routine in case tagnum for a class changes (in case the * dictionary of a shared lib is being re-initialized). *********************************************************************/ extern "C" { typedef void (*G__pMethodUpdateClassInfo)(char *item,long tagnum); void G__InitUpdateClassInfo(G__pMethodUpdateClassInfo pmethod); } #endif /********************************************************************* * G__SourceFileInfo *********************************************************************/ class G__SourceFileInfo { public: G__SourceFileInfo() { Init(); } G__SourceFileInfo(int filenin) { filen = filenin; } G__SourceFileInfo(const char* fname) { 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(); private: int filen; }; /********************************************************************* * G__IncludePathInfo *********************************************************************/ #ifndef __CINT__ struct G__includepath; #endif class G__IncludePathInfo { public: G__IncludePathInfo() { Init(); } ~G__IncludePathInfo() { } void Init() { p=(struct G__includepath*)NULL; } const char *Name(); long Property(); int IsValid(); int Next(); private: #ifndef __CINT__ struct G__includepath *p; #endif }; #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; #endif #endif