Api.h

Go to the documentation of this file.
00001 /* /% C++ %/ */
00002 /***********************************************************************
00003  * cint (C/C++ interpreter)
00004  ************************************************************************
00005  * Header file Api.h
00006  ************************************************************************
00007  * Description:
00008  *  Extended Run Time Type Identification API
00009  *   -I$(CINTSYSDIR) -I$(CINTSYSDIR)/src must be given at compile time
00010  ************************************************************************
00011  * Copyright(c) 1995~1999  Masaharu Goto
00012  *
00013  * For the licensing terms see the file COPYING
00014  *
00015  ************************************************************************/
00016 
00017 #ifndef G__API_H
00018 #define G__API_H
00019 
00020 /*********************************************************************
00021 * include header files
00022 *********************************************************************/
00023 
00024 #define G__API
00025 #include "G__ci.h"
00026 #ifdef __MAKECINT__
00027 #pragma link off all classes;
00028 #pragma link off all functions;
00029 #pragma link off all globals;
00030 #pragma link off all typedefs;
00031 #endif
00032 
00033 #define G__INFO_BUFLEN 50
00034 /* #define G__INFO_TITLELEN 256 */
00035 #define G__INFO_TITLELEN G__ONELINE
00036 
00037 #ifndef G__PROPERTY_H
00038 #include "Property.h"
00039 #endif
00040 #ifndef G__CLASSINFO_H
00041 #include "Class.h"
00042 #endif
00043 #ifndef G__BaseClassInfo_H
00044 #include "BaseCls.h"
00045 #endif
00046 #ifndef G__TYPEINFOX_H
00047 #include "Type.h"
00048 #endif
00049 #ifndef G__METHODINFO_H
00050 #include "Method.h"
00051 #endif
00052 #ifndef G__METHODARGINFO_H
00053 #include "MethodAr.h"
00054 #endif
00055 #ifndef G__DATAMEMBER_H
00056 #include "DataMbr.h"
00057 #endif
00058 #ifndef G__CALLFUNC_H
00059 #include "CallFunc.h"
00060 #endif
00061 #ifndef G__TYPEDEFINFO_H
00062 #include "Typedf.h"
00063 #endif
00064 #ifndef G__TOKENINFO_H
00065 #include "Token.h"
00066 #endif
00067 
00068 #include <vector>
00069 #include <string>
00070 
00071 #ifndef __CINT__
00072 struct G__includepath;
00073 #endif
00074 
00075 extern "C" {
00076 #ifndef __CINT__
00077 G__EXPORT
00078 #endif
00079 int G__Lsizeof(const char *typenamein);
00080 }
00081 
00082 struct G__ConstStringList;
00083 struct G__Preprocessfilekey;
00084 struct G__Deffuncmacro;
00085 struct G__Definedtemplateclass;
00086 struct G__Definetemplatefunc;
00087 
00088 /*********************************************************************
00089  * scratch upto dictionary position
00090  *********************************************************************/
00091 struct G__dictposition {
00092    /* global variable table position */
00093    struct G__var_array *var;
00094    int ig15;
00095    /* struct tagnum */
00096    int tagnum;
00097    /* const string table */
00098    struct G__ConstStringList *conststringpos;
00099    /* typedef table */
00100    int typenum;
00101    /* global function table position */
00102    struct G__ifunc_table *ifunc;
00103    int ifn;
00104    /* include path */
00105    struct G__includepath *ipath;
00106    /* shared library file */
00107    int allsl;
00108    /* preprocessfilekey */
00109    struct G__Preprocessfilekey *preprocessfilekey;
00110    /* input file */
00111    int nfile;
00112    /* macro table */
00113    struct G__Deffuncmacro *deffuncmacro;
00114    /* template class */
00115    struct G__Definedtemplateclass *definedtemplateclass;
00116    /* function template */
00117    struct G__Definetemplatefunc *definedtemplatefunc;
00118    
00119    int nactives; /* number of 'active' classes */
00120 };
00121 
00122 namespace Cint {
00123 
00124 /*********************************************************************
00125 * $xxx object resolution function, pointer to a class object
00126 *
00127 * Usage:
00128 *
00129 *  void YourGetObject(char *name,G__ClassInfo *type) {
00130 *     void *p;
00131 *     // Whatever you want to fill type and pointetr to the object info
00132 *     return(p);
00133 *  }
00134 *
00135 *  ROOT_Initialization() {
00136 *     // set pointer to yourown interface method
00137 *     G__InitGetSpecialObject(YourGetObject);
00138 *  }
00139 *********************************************************************/
00140 typedef void *(*G__pMethodSpecialObject)(char *item,G__ClassInfo *typeinfo
00141                                          ,void** pptr,void** ppdict);
00142 #ifndef __CINT__
00143 G__EXPORT
00144 #endif
00145 void G__InitGetSpecialObject(G__pMethodSpecialObject pmethod);
00146 
00147 /*********************************************************************
00148 * $xxx object resolution function, Generic
00149 *********************************************************************/
00150 typedef void (*G__pMethodSpecialValue)(char *item,G__TypeInfo *typeinfo
00151                                        ,long *pl,double *pd,void** pptr
00152                                        ,void** ppdict);
00153 #ifndef __CINT__
00154 G__EXPORT
00155 #endif
00156 void G__InitGetSpecialValue(G__pMethodSpecialValue pmethod);
00157 
00158 
00159 #ifndef __CINT__
00160 G__EXPORT
00161 #endif
00162 int G__SetGlobalcomp(char *funcname,char *param,int globalcomp); // Method.cxx
00163 int G__SetForceStub(char *funcname,char *param); // Method.cxx
00164 
00165 #ifndef __CINT__
00166 G__EXPORT
00167 #endif
00168 int G__ForceBytecodecompilation(char *funcname,char *param); // Method.cxx
00169 
00170 /*********************************************************************
00171 * Feedback routine in case tagnum for a class changes (in case the
00172 * dictionary of a shared lib is being re-initialized).
00173 *********************************************************************/
00174 typedef void (*G__pMethodUpdateClassInfo)(char *item,long tagnum);
00175 
00176 #ifndef __CINT__
00177 G__EXPORT
00178 #endif
00179 void G__InitUpdateClassInfo(G__pMethodUpdateClassInfo pmethod);
00180 
00181 #ifndef __CINT__
00182 G__EXPORT
00183 #endif
00184 void* G__new_interpreted_object(int size);
00185 
00186 #ifndef __CINT__
00187 G__EXPORT
00188 #endif
00189 void G__delete_interpreted_object(void* p);
00190 
00191 /*********************************************************************
00192 * Generate dictionary.
00193 *********************************************************************/
00194    typedef int (*G__pGenerateDictionary)(const std::string &className,const std::vector<std::string> &headers, const std::vector<std::string> &fwdDecls, const std::vector<std::string> &unknown);
00195 
00196 #ifndef __CINT__
00197 G__EXPORT
00198 #endif
00199 void G__InitGenerateDictionary( G__pGenerateDictionary gdict );
00200 
00201 #ifndef __CINT__
00202 G__EXPORT
00203 #endif
00204 G__pGenerateDictionary G__GetGenerateDictionary();
00205 
00206 
00207 /*********************************************************************
00208 * G__SourceFileInfo
00209 *********************************************************************/
00210 class
00211 #ifndef __CINT__
00212 G__EXPORT
00213 #endif
00214 G__SourceFileInfo {
00215  public:
00216   G__SourceFileInfo(): filen(0) { Init(); }
00217   G__SourceFileInfo(int filenin): filen(filenin) { }
00218   G__SourceFileInfo(const char* fname): filen(0) { Init(fname); }
00219   ~G__SourceFileInfo() { }
00220   void Init() {
00221     filen = -1;
00222   }
00223   void Init(const char* fname);
00224   const char *Name();
00225   const char *Prepname();
00226   FILE* fp();
00227   int MaxLine();
00228   G__SourceFileInfo& IncludedFrom();
00229   long Property();
00230   int IsValid();
00231   int Next();
00232 
00233   static int SerialNumber();
00234  private:
00235   int filen;
00236 };
00237 
00238 /*********************************************************************
00239 * G__IncludePathInfo
00240 *********************************************************************/
00241 class
00242 #ifndef __CINT__
00243 G__EXPORT
00244 #endif
00245 G__IncludePathInfo {
00246  public:
00247   G__IncludePathInfo(): p(NULL) { Init(); }
00248 #ifndef __CINT__
00249   G__IncludePathInfo(const G__IncludePathInfo& ipf): p(ipf.p) {}
00250 #endif
00251   ~G__IncludePathInfo() { }
00252   void Init() { p=(struct G__includepath*)NULL; }
00253   const char *Name();
00254   long Property();
00255   int IsValid();
00256   int Next();
00257  private:
00258   G__IncludePathInfo& operator=(const G__IncludePathInfo&);
00259 #ifndef __CINT__
00260   struct G__includepath *p;
00261 #endif
00262 };
00263 
00264 #ifdef G__EXCEPTIONWRAPPER
00265 /*********************************************************************
00266 * G__ExceptionWrapper
00267 *********************************************************************/
00268 int G__ExceptionWrapper(G__InterfaceMethod funcp
00269                         ,G__value* result7
00270                         ,char* funcname
00271                         ,struct G__param *libp
00272                         ,int hash);
00273 #endif
00274 
00275 unsigned long G__long_random(unsigned long limit);
00276    
00277 
00278 
00279 /*********************************************************************
00280 * External readline interface
00281 *********************************************************************/
00282 typedef char* (*G__pGetline_t)(const char* prompt);
00283 typedef void  (*G__pHistadd_t)(char* line);
00284 
00285 #ifndef __CINT__
00286 G__EXPORT
00287 #endif
00288 G__pGetline_t G__GetGetlineFunc();
00289 
00290 #ifndef __CINT__
00291 G__EXPORT
00292 #endif
00293 G__pHistadd_t G__GetHistaddFunc();
00294 
00295 #ifndef __CINT__
00296 G__EXPORT
00297 #endif
00298    void G__SetGetlineFunc(G__pGetline_t glfcn, G__pHistadd_t hafcn);
00299 
00300 } // namespace Cint
00301 
00302 using namespace Cint;
00303 
00304 #ifdef __MAKECINT__
00305 #pragma link off class $G__value;
00306 #pragma link off class $G__COMPLETIONLIST;
00307 #pragma link off class $G__linked_taginfo;
00308 #pragma link off class G__includepath;
00309 #pragma link C++ namespace Cint;
00310 #pragma link C++ nestedclasses;
00311 #pragma link off namespace Cint::Internal;
00312 #endif
00313 
00314 #endif

Generated on Tue Jul 5 14:24:56 2011 for ROOT_528-00b_version by  doxygen 1.5.1