G__ci.h

Go to the documentation of this file.
00001 /* /% C %/ */
00002 /***********************************************************************
00003  * cint (C/C++ interpreter)
00004  ************************************************************************
00005  * CINT header file G__ci.h
00006  ************************************************************************
00007  * Description:
00008  *  C/C++ interpreter header file
00009  ************************************************************************
00010  * Copyright(c) 1995~2007  Masaharu Goto (cint@pcroot.cern.ch)
00011  *
00012  * For the licensing terms see the file COPYING
00013  *
00014  ************************************************************************/
00015 
00016 #ifndef G__CI_H
00017 #define G__CI_H
00018 
00019 #ifndef G__CINT_VER6
00020 #define G__CINT_VER6  1
00021 #endif
00022 
00023 #define G__CINTVERSION_V6      60030000
00024 #define G__CINTVERSIONSTR_V6  "6.03.00, July 2, 2010"
00025 #define G__CINTVERSION_V5      50180000
00026 #define G__CINTVERSIONSTR_V5  "5.18.00, July 2, 2010"
00027 
00028 #define G__ALWAYS
00029 /* #define G__NEVER */
00030 /**********************************************************************
00031 * SPECIAL CHANGES and CINT CORE COMPILATION SWITCH
00032 **********************************************************************/
00033 
00034 #define G__NATIVELONGLONG 1
00035 
00036 #ifndef G__CINT_VER6
00037 #define G__OLDIMPLEMENTATION2187
00038 #define G__OLDIMPLEMENTATION2184
00039 #define G__OLDIMPLEMENTATION2182
00040 #define G__OLDIMPLEMENTATION2177
00041 #define G__OLDIMPLEMENTATION2172
00042 #define G__OLDIMPLEMENTATION2171
00043 #define G__OLDIMPLEMENTATION2170
00044 #define G__OLDIMPLEMENTATION2169
00045 #define G__OLDIMPLEMENTATION2163
00046 #define G__OLDIMPLEMENTATION2162
00047 #define G__OLDIMPLEMENTATION2161
00048 #define G__OLDIMPLEMENTATION2160
00049 #define G__OLDIMPLEMENTATION2159
00050 #define G__OLDIMPLEMENTATION2156
00051 #define G__OLDIMPLEMENTATION2155
00052 #define G__OLDIMPLEMENTATION2154
00053 #define G__OLDIMPLEMENTATION2153
00054 #define G__OLDIMPLEMENTATION2152
00055 #define G__OLDIMPLEMENTATION2151
00056 #define G__OLDIMPLEMENTATION2150
00057 #define G__OLDIMPLEMENTATION2148
00058 #define G__OLDIMPLEMENTATION2147
00059 #define G__OLDIMPLEMENTATION2146
00060 #define G__OLDIMPLEMENTATION2143
00061 #define G__OLDIMPLEMENTATION2142
00062 #define G__OLDIMPLEMENTATION2141
00063 #define G__OLDIMPLEMENTATION2140
00064 #define G__OLDIMPLEMENTATION2138
00065 #define G__OLDIMPLEMENTATION2137
00066 #define G__OLDIMPLEMENTATION2136
00067 #define G__OLDIMPLEMENTATION2135
00068 #define G__OLDIMPLEMENTATION2134
00069 #define G__OLDIMPLEMENTATION2133
00070 #define G__OLDIMPLEMENTATION2132
00071 #define G__OLDIMPLEMENTATION2131
00072 #define G__OLDIMPLEMENTATION2129
00073 #define G__OLDIMPLEMENTATION2128
00074 #define G__OLDIMPLEMENTATION2127
00075 #define G__OLDIMPLEMENTATION2122
00076 #define G__OLDIMPLEMENTATION2117
00077 #define G__OLDIMPLEMENTATION2116
00078 /* #define G__OLDIMPLEMENTATION2115 */
00079 /* #define G__OLDIMPLEMENTATION2114 */
00080 #define G__OLDIMPLEMENTATION2112
00081 #define G__OLDIMPLEMENTATION2111
00082 #define G__OLDIMPLEMENTATION2110
00083 #define G__OLDIMPLEMENTATION2109
00084 #define G__OLDIMPLEMENTATION2105
00085 #define G__OLDIMPLEMENTATION2102
00086 #define G__OLDIMPLEMENTATION2089
00087 #define G__OLDIMPLEMENTATION2087
00088 #define G__OLDIMPLEMENTATION2084
00089 #define G__OLDIMPLEMENTATION2075
00090 #define G__OLDIMPLEMENTATION2074
00091 #define G__OLDIMPLEMENTATION2073
00092 #define G__OLDIMPLEMENTATION2067
00093 #define G__OLDIMPLEMENTATION2066
00094 #define G__OLDIMPLEMENTATION2062
00095 #define G__OLDIMPLEMENTATION2058
00096 /* #define G__OLDIMPLEMENTATION2057 */
00097 /* #define G__OLDIMPLEMENTATION2056 */
00098 #define G__OLDIMPLEMENTATION2054
00099 #define G__OLDIMPLEMENTATION2051
00100 #define G__OLDIMPLEMENTATION2042
00101 #define G__OLDIMPLEMENTATION1073
00102 #endif
00103 
00104 #ifdef G__ROOT
00105 /* Disable the new stack variable manager */
00106 #define G__OLDIMPLEMENTATION1073
00107 #endif
00108 
00109 /* Native long long, unsigned long long, long double implementation */
00110 #ifndef G__NATIVELONGLONG
00111 #define G__OLDIMPLEMENTATION2189
00112 #define G__OLDIMPLEMENTATION2192
00113 #endif
00114 
00115 /* Problem remains with autoloading if library is unloaded. Tried to fix it
00116  * with 2015, but this has problem with ROOT. */
00117 #define G__OLDIMPLEMENTATION2015
00118 
00119 
00120 /* If you have problem compiling dictionary with static member function,
00121  * define following macro. */
00122 /* #define G__OLDIMPLEMENTATION1993 */
00123 
00124 /* 1987 fixes the same problem. Turned off because of redundancy. */
00125 #define G__OLDIMPLEMENTATION1986
00126 
00127 /* suppress unused parameter warnings. optional */
00128 #ifndef G__SUPPRESS_UNUSEDPARA
00129 #define G__OLDIMPLEMENTATION1911
00130 #endif
00131 
00132 /* &a, avoid uninitialized memory access */
00133 /* #define G__AVOID_PTR_UNINITACCESS */  /* Turned out this fix was wrong */
00134 #ifndef G__AVOID_PTR_UNINITACCESS
00135 #define G__OLDIMPLEMENTATION1942
00136 #endif
00137 
00138 /* Define G__FIX1 if you have problem defining variable argument functions
00139  * such as printf, fprintf, etc... in Windows */
00140 /* #define G__FIX1 */
00141 
00142 /* 1885 has side-effect in building ROOT */
00143 #define G__OLDIMPLEMENTATION1885
00144 
00145 /* 1770 changes implementation of skipping function implementation during
00146  * prerun. In order to activate new implementation, comment out following
00147  * line */
00148 #define G__OLDIMPLEMENTATION1770
00149 
00150 
00151 /* Change 1706, regarding function overriding, is very risky. So, this is
00152  * deactivated for now. With this change turned on, loading and unloading
00153  * of interpreted and compiled function can be done more robustly. */
00154 #define G__OLDIMPLEMENTATION1706
00155 
00156 /* Rootcint's default link status has been changed from 5.15.57.
00157  * Define following macro if new scheme has problems. */
00158 /* #define G__OLDIMPLEMENTATION1700 */
00159 
00160 /* For a machine which has unaddressable bool */
00161 #ifndef G__UNADDRESSABLEBOOL
00162 #if defined(__APPLE__) && defined(__ppc__)
00163 /* Fons, if you find problems, comment out G__BOOL4BYTE and uncomment
00164  * G__UNADDRESSABLEBOOL. Thanks */
00165 #define G__BOOL4BYTE
00166 /* #define G__UNADDRESSABLEBOOL */
00167 #endif
00168 #endif
00169 
00170 /* Speed up G__strip_quotation */
00171 #ifdef G__ROOT
00172 #ifndef G__CPPCONSTSTRING
00173 #define G__CPPCONSTSTRING
00174 #endif
00175 #endif
00176 
00177 /* Activate pointer to member function handling in interpreted code.
00178  * Seamless access of pointer to member between interpreted and compiled code
00179  * is not implemented yet. */
00180 #ifndef G__PTR2MEMFUNC
00181 #define G__PTR2MEMFUNC
00182 #endif
00183 
00184 /* 1649 is not ready yet */
00185 /* #define G__OLDIMPLEMENTATION1649 */
00186 
00187 /* Define following macro in order to disable iostream I/O redirection */
00188 /* #define G__OLDIMPLEMENTATION1635 */
00189 
00190 /* Define following macro to enable multi-thread safe libcint and DLL
00191  * features. */
00192 /* #define G__MULTITHREADLIBCINT */
00193 
00194 /* Define G__ERRORCALLBACK to activat error message redirection. If
00195  * G__ERRORCALLBACK is defined, a user can set a callback routine for
00196  * handling error message by G__set_errmsgcallback() API */
00197 #ifndef G__ERRORCALLBACK
00198 #define G__ERRORCALLBACK
00199 #endif
00200 
00201 /* 2001 masks G__ateval overloading resolution error. It turns out this is
00202  * not a good way, the feature is turned off */
00203 #define G__OLDIMPLEMENTATION2001
00204 
00205 /* Define following macros if you want to store where global variables
00206  * and typedefs are defined in source files. Reason of not making this
00207  * default is because it breaks DLL compatibility. */
00208 #define G__VARIABLEFPOS
00209 #define G__TYPEDEFFPOS
00210 
00211 /* If you use old g++ and having problem compiling dictionary with
00212  * true pointer to function with const return value, define following
00213  * macro to workaround the problem. */
00214 /* #define G__OLDIMPLEMENTATION1328 */
00215 
00216 /* Define G__CONSTNESSFLAG for activating function overloading by
00217  * object constness. */
00218 #define G__CONSTNESSFLAG
00219 #ifndef G__CONSTNESSFLAG
00220 #define G__OLDIMPLEMENTATION1258 /* create func entry w/wo func constness */
00221 #define G__OLDIMPLEMENTATION1259 /* add isconst in G__value and set it */
00222 #define G__OLDIMPLEMENTATION1260 /* use isconst info for func overloading */
00223 #endif
00224 
00225 /* New function overloading resolution algorithm which is closer to
00226  * ANSI/ISO standard is implemented from cint5.14.35. This is a major
00227  * change and there are some risks. Define following macro in order to
00228  * use old algorithm. */
00229 /* #define G__OLDIMPLEMENTATION1290 */
00230 
00231 /* Define G__EXCEPTIONWRAPPER for activating C++ exception catching
00232  * when calling precompiled function. It is better to define this macro
00233  * in platform dependency file OTHMACRO flag. Reason of not making this
00234  * default is because some old compilers may not support exception. */
00235 /* #define G__EXCEPTIONWRAPPER */
00236 
00237 /* Define G__STD_EXCEPTION for using std::exception in exception handler.
00238  * If G__STD_EXCEPTION is defined, G__EXCEPTIONWRAPPER is also defined. */
00239 /* #define G__STD_EXCEPTION */
00240 
00241 /* If you define G__REFCONV in platform dependency file, bug fix for
00242  * reference argument conversion is activated. This macro breaks DLL
00243  * compatibility between cint5.14.14 and 5.14.15. If you define
00244  * G__REFCONV, cint5.14.15 or newer version can load older DLL. But
00245  * cint5.14.14 or older version can not load DLL that is created by
00246  * cint5.14.15 or later cint. */
00247 #define G__REFCONV
00248 
00249 /* This change activates bytecode compilation of class object
00250  * instantiation in a function. Because the change includes some
00251  * problems , it is turned off at this moment by defining following
00252  * macro. */
00253 #ifdef G__OLDIMPLEMENTATION1073
00254 /* define related macros here */
00255 #endif
00256 
00257 /* Scott Snyder's modification Apr1999 9.Improvements for `variable' macros.
00258  * Comment out line below to activate the change */
00259 #define G__OLDIMPLEMENTATION1062
00260 
00261 /* Scott Snyder's modification Apr1999 10.More CRLF problems
00262  * Comment out line below to activate the change */
00263 #define G__OLDIMPLEMENTATION1063
00264 
00265 /* Scott Snyder's modification in macro.c around line 709. Apr1999
00266  * Uncomment following line to use 969 version */
00267 /* #define G__OLDIMPLEMENTATION973 */
00268 
00269 
00270 /* Unlimited number of function arguments. THIS MODIFICATION IS TURNED OFF
00271  * because the change did not work. I decided to keep the code somehow. */
00272 #define G__OLDIMPLEMENTATION834
00273 
00274 /**********************************************************************
00275 * END OF SPECIAL CHANGES and CINT CORE COMPILATION SWITCH
00276 **********************************************************************/
00277 
00278 /**************************************************************************
00279 * One of following macro has to be defined to fix DLL global function
00280 * conflict problem. G__CPPIF_STATIC is recommended. Define G__CPPIF_PROJNAME
00281 * only if G__CPPIF_STATIC has problem with your compiler.
00282 **************************************************************************/
00283 #ifdef G__CPPIF_EXTERNC
00284 #ifndef G__CPPIF_PROJNAME
00285 #define G__CPPIF_PROJNAME
00286 #endif
00287 #ifdef G__CPPIF_STATIC
00288 #undef G__CPPIF_STATIC
00289 #endif
00290 #endif
00291 
00292 #ifndef G__CPPIF_PROJNAME
00293 #ifndef G__CPPIF_STATIC
00294 #define G__CPPIF_STATIC
00295 #endif
00296 #endif
00297 
00298 /**************************************************************************
00299 * G__reftype, var->reftype[], ifunc->reftype[] flag
00300 **************************************************************************/
00301 #define G__PARANORMAL       0
00302 #define G__PARAREFERENCE    1
00303 #define G__PARAP2P          2
00304 #define G__PARAP2P2P        3
00305 
00306 #define G__PARAREF         100
00307 #define G__PARAREFP2P      102
00308 #define G__PARAREFP2P2P    103
00309 
00310 /**************************************************************************
00311 * if __MAKECINT__ is defined, do not include this file
00312 * G__MAKECINT is automatically defined in makecint or G__makesetup script
00313 **************************************************************************/
00314 #if (!defined(__MAKECINT__)) || defined(G__API) || defined(G__BC_DICT)
00315 
00316 
00317 #ifdef __cplusplus
00318 #ifndef G__ANSIHEADER
00319 #define G__ANSIHEADER
00320 #endif
00321 #endif
00322 
00323 #ifdef __SC__
00324 #ifndef G__SYMANTEC
00325 #define G__SYMANTEC
00326 #endif
00327 #endif
00328 
00329 #ifdef __QNX__
00330 #ifndef G__QNX
00331 #define G__QNX
00332 #endif
00333 #endif
00334 
00335 #ifdef _MSC_VER
00336 #ifndef G__VISUAL
00337 #define G__VISUAL 1
00338 #endif
00339 #ifndef G__MSC_VER
00340 #define G__MSC_VER
00341 #endif
00342 #endif
00343 
00344 #if defined(__BORLANDC__) || defined(__BCPLUSPLUS) || defined(__BCPLUSPLUS__) || defined(G__BORLANDCC5)
00345 #ifndef G__BORLAND
00346 #define G__BORLAND
00347 #endif
00348 #endif
00349 
00350 #ifdef G__BORLANDCC5
00351 #define G__SHAREDLIB
00352 #define G__DLL_SYM_UNDERSCORE
00353 #define G__WIN32
00354 #define G__ANSI
00355 #define G__P2FCAST
00356 #define G__REDIRECTIO
00357 #define G__DETECT_NEWDEL
00358 #define G__POSIX
00359 #define G__STD_EXCEPTION
00360 #endif
00361 
00362 #if defined(_WIN32) || defined(_WINDOWS) || defined(_Windows) || defined(_WINDOWS_)
00363 #ifndef G__WIN32
00364 #define G__WIN32
00365 #endif
00366 #endif
00367 
00368 /* added by Fons Radamakers in 2000 Oct 2 */
00369 #if (defined(__linux) || defined(__linux__) || defined(linux)) && ! defined(__CINT__)
00370 #   include <features.h>
00371 #   if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2
00372 #      define G__NONSCALARFPOS2
00373 #   endif
00374 #endif
00375 
00376 /***********************************************************************
00377  * Native long long support
00378  ***********************************************************************/
00379 #if defined(G__WIN32) && !defined(__CINT__)
00380 typedef __int64            G__int64;
00381 typedef unsigned __int64   G__uint64;
00382 #else
00383 typedef long long          G__int64;
00384 typedef unsigned long long G__uint64;
00385 #endif
00386 
00387 
00388 
00389 /***********************************************************************
00390  * Something that depends on platform
00391  ***********************************************************************/
00392 
00393 #define ENABLE_CPP_EXCEPTIONS 1
00394 
00395 /* Exception */
00396 #if defined(G__WIN32) && !defined(G__STD_EXCEPTION)
00397 #define G__STD_EXCEPTION
00398 #endif
00399 #if defined(G__STD_EXCEPTION) && !defined(G__EXCEPTIONWRAPPER) && !defined(G__APIIF)
00400 #define G__EXCEPTIONWRAPPER
00401 #endif
00402 
00403 /* Error redirection ,  G__fprinterr */
00404 #if defined(G__WIN32) && !defined(G__ERRORCALLBACK)
00405 #define G__ERRORCALLBACK
00406 #endif
00407 #ifndef G__ERRORCALLBACK
00408 #define G__OLDIMPLEMENTATION1485
00409 #define G__OLDIMPLEMENTATION2000
00410 #endif
00411 
00412 /* temporary file generation */
00413 #if defined(G__WIN32)
00414 #define G__TMPFILE
00415 #endif
00416 
00417 
00418 /***********************************************************************
00419  * Define G__EH_DUMMY_DELETE in order to avoid some compiler dependency
00420  * about 'void operator delete(void*,[DLLID]_tag*);'
00421  ***********************************************************************/
00422 #if defined(__HP_aCC) || defined(G__VISUAL) || defined(__INTEL_COMPILER)
00423 #define G__EH_DUMMY_DELETE
00424 #endif
00425 
00426 #ifdef G__NONANSI
00427 #ifdef G__ANSIHEADER
00428 #undef G__ANSIHEADER
00429 #endif
00430 #endif
00431 
00432 #ifndef G__IF_DUMMY
00433 #define G__IF_DUMMY /* avoid compiler warning */
00434 #endif
00435 
00436 #if defined(G__BORLAND) || defined(G__VISUAL)
00437 #define G__DLLEXPORT __declspec(dllexport)
00438 #define G__DLLIMPORT __declspec(dllimport)
00439 #else
00440 #define G__DLLEXPORT
00441 #define G__DLLIMPORT
00442 #endif
00443 
00444 #if (defined(G__BORLAND)||defined(G__VISUAL)||defined(G__CYGWIN)) && defined(G__CINTBODY) && !defined(__CINT__)
00445 #define G__EXPORT __declspec(dllexport)
00446 #else
00447 #define G__EXPORT
00448 #endif
00449 
00450 
00451 
00452 #if defined(G__SIGNEDCHAR)
00453 typedef signed char G__SIGNEDCHAR_T;
00454 #else
00455 typedef char G__SIGNEDCHAR_T;
00456 #endif
00457 
00458 #include <math.h>
00459 #include <stdio.h>
00460 #include <string.h>
00461 #include <stddef.h>
00462 #include <stdlib.h>
00463 #include <signal.h>
00464 #include <assert.h>
00465 #include <limits.h>
00466 #include <setjmp.h>
00467 /* #include <time.h> */
00468 #include <ctype.h>
00469 #include <fcntl.h>
00470 
00471 
00472 
00473 #if defined(__cplusplus) && !defined(__CINT__)
00474 extern "C" {   /* extern C 1 */
00475 #endif
00476 
00477 #ifndef G__WIN32
00478 #include <unistd.h>
00479 #endif
00480 
00481 #ifdef G__REGEXP
00482 #include <regex.h>
00483 #endif
00484 
00485 #ifdef G__REGEXP1
00486 #include <libgen.h>
00487 #endif
00488 
00489 #if   defined(G__SUNOS4)
00490 #include "src/sunos.h"
00491 #elif defined(G__NEWSOS4) || defined(G__NEWSOS6)
00492 #include "src/newsos.h"
00493 #elif defined(G__NONANSI)
00494 #include "src/sunos.h"
00495 #endif
00496 
00497 
00498 #define G__DUMPFILE
00499 #define G__DOSHUGE
00500 
00501 
00502 #ifndef G__REFCONV
00503 #define G__OLDIMPLEMENTATION1167
00504 #endif
00505 
00506 
00507 /* Special typeinfo enhacement for Fons Rademaker's request */
00508 #define G__FONS_TYPEINFO
00509 #define G__FONS_COMMENT
00510 #define G__FONS_ROOTSPECIAL
00511 #define G__ROOTSPECIAL
00512 
00513 /**********************************************************************
00514 * Function call stack
00515 **********************************************************************/
00516 #define G__SHOWSTACK
00517 #define G__VAARG
00518 
00519 /**************************************************************************
00520 * Dump function calls to '-d [dumpfile]', if G__DUMPFILE is defined.
00521 *
00522 **************************************************************************/
00523 
00524 /**************************************************************************
00525 * Interpreter Security mode
00526 *
00527 **************************************************************************/
00528 #define G__SECURITY
00529 
00530 #ifdef G__SECURITY
00531 
00532 /* #include "include/security.h" */
00533 
00534 #define G__NOERROR            0x0000
00535 #define G__RECOVERABLE        0x0001
00536 #define G__DANGEROUS          0x0002
00537 #define G__FATAL              0x0004
00538 
00539 #ifdef G__64BIT
00540 typedef unsigned int G__UINT32 ;
00541 #else
00542 typedef unsigned long G__UINT32 ;
00543 #endif
00544 
00545 #if (defined(G__SGICC) || defined(G__DECCXX)) && defined(G__ROOT)
00546 #define G__CHECK(ITEM,COND,ACTION)                                       \
00547  if((G__security=G__SECURE_LEVEL0)&&(G__security&ITEM) && (COND) && G__security_handle(ITEM)) ACTION
00548 #else
00549 #define G__CHECK(ITEM,COND,ACTION)                                       \
00550  if((G__security&ITEM) && (COND) && G__security_handle(ITEM)) ACTION
00551 #endif
00552 
00553 #define G__CHECKDRANGE(p,low,up) \
00554  if(G__check_drange(p,low,up,G__double(libp->para[p]),result7,funcname)) \
00555    return(1)
00556 
00557 #define G__CHECKLRANGE(p,low,up) \
00558  if(G__check_lrange(p,low,up,G__int(libp->para[p]),result7,funcname)) return(1)
00559 
00560 #define G__CHECKTYPE(p,t1,t2) \
00561  if(G__check_type(p,t1,t2,&libp->para[p],result7,funcname)) return(1)
00562 
00563 #define G__CHECKNONULL(p,t) \
00564  if(G__check_nonull(p,t,&libp->para[p],result7,funcname)) return(1)
00565 
00566 #define G__CHECKNPARA(n) \
00567  if(n!=libp->paran) { \
00568     G__printerror(funcname,n,libp->paran); \
00569     *result7=G__null; \
00570     return(1); \
00571  }
00572 
00573 #else /* G__SECURITY */
00574 
00575 #define G__CHECK(ITEM,COND,ACTION)   NULL
00576 #define G__CHECKDRANE(p,up,low)  NULL
00577 #define G__CHECKLRANE(p,up,low)  NULL
00578 #define G__CHECKNONULL(p)  NULL
00579 #define G__CHECKNPARA(n)  NULL
00580 
00581 #endif /* G__SECURITY */
00582 
00583 
00584 /**************************************************************************
00585 * True pointer to global function
00586 *
00587 **************************************************************************/
00588 #define G__TRUEP2F
00589 
00590 /**************************************************************************
00591 * Whole function compilation
00592 *
00593 **************************************************************************/
00594 #define G__ASM_FUNC
00595 #define G__ASM_WHOLEFUNC
00596 
00597 /**************************************************************************
00598 * C++  evolution has begun from revision 3.0.10.
00599 *
00600 * Define macro 'G__CPLUSPLUS' for C++ version.
00601 * If G__CPLUSPLUS is not defined, all C++ features are turned off. In this
00602 * case it must be compatible with 3.0.9.
00603 **************************************************************************/
00604 #define G__CPLUSPLUS
00605 
00606 
00607 
00608 #ifdef G__CPLUSPLUS
00609 
00610 /**********************************************************************
00611 * Object oriented feature of C++
00612 **********************************************************************/
00613 
00614 /* Create default assignment operator for new C++ linkage */
00615 /* #define G__DEFAULTASSIGNOPR */
00616 
00617 /* virtual base class */
00618 #define G__VIRTUALBASE
00619 
00620 /* new inheritance implementation */
00621 #define G__NEWINHERIT
00622 
00623 /* Friend class and function */
00624 #define G__FRIEND
00625 
00626 /* Run time type information */
00627 #define G__TYPEINFO
00628 
00629 /* new, delete operator */
00630 #define G__NEWDELETE
00631 #define G__NEWDELETE_YET
00632 
00633 /* destructor */
00634 #define G__DESTRUCTOR
00635 
00636 /* constructor */
00637 #define G__CONSTRUCTOR
00638 #define G__COPYCONSTRUCTOR
00639 
00640 /* member function */
00641 #define G__MEMBERFUNC
00642 
00643 /* keyword class */
00644 #define G__CLASS
00645 
00646 /* member access control */
00647 #define G__ACCESS
00648 
00649 #ifdef G__NEWINHERIT
00650 #define G__PUBLIC       0x01
00651 #define G__PROTECTED    0x02
00652 #define G__PRIVATE      0x04
00653 #define G__GRANDPRIVATE 0x08
00654 #define G__PUBLIC_PROTECTED_PRIVATE 0x7
00655 #define G__PUBLIC_PROTECTED         0x3
00656 
00657 #else
00658 #define G__PUBLIC    0
00659 #define G__PROTECTED 1
00660 #define G__PRIVATE   2
00661 #define G__GRANDPRIVATE 3
00662 #endif
00663 
00664 /* inheritance */
00665 #define G__INHERIT
00666 #define G__INHERIT1
00667 #define G__INHERIT2
00668 #define G__INHERIT3
00669 #define G__INHERIT4
00670 #define G__INHERIT5
00671 
00672 #define G__EXPLICITCONV
00673 
00674 #ifdef __CINT__
00675 typedef int (*G__IgnoreInclude)();
00676 #endif
00677 
00678 /**********************************************************************
00679 * Non object oriented feature of C++
00680 **********************************************************************/
00681 
00682 /***************************************************************
00683 * Implementation of function/operator overloading is not
00684 * completed. It is very premature.
00685 ***************************************************************/
00686 
00687 /* if G__OVERLOADOPERATOR is defined, G__OVERLOADFUNC must be also defined */
00688 #define G__OVERLOADOPERATOR
00689 #define G__OVERLOADOPERATOR2
00690 
00691 /* if G__OVERLOADFUNC is defined, G__IFUNCPARA must be also defined */
00692 #define G__OVERLOADFUNC
00693 
00694 #define G__OVERLOADFUNC2
00695 #define G__EXACT     1
00696 #define G__PROMOTION 2
00697 #define G__STDCONV   3
00698 #define G__USERCONV  4
00699 
00700 /* for struct,class,union return value */
00701 #define G__TEMPOBJECT
00702 #define G__TEMPOBJECT2
00703 
00704 /* reference type */
00705 #define G__REFERENCETYPE
00706 
00707 /* improved version of reference type implementation */
00708 #define G__REFERENCETYPE2
00709 
00710 /***************************************************************
00711 * Having default parameter for function
00712 ***************************************************************/
00713 
00714 /* G__DEFAULTPARAMETER can be defined independently */
00715 #define G__DEFAULTPARAMETER
00716 
00717 
00718 /***************************************************************
00719 * reading and storing parameter type for ANSI stype function
00720 * header. This functionality itself can be added to non C++
00721 * version but it won't play essential part.  For C++ version,
00722 * function parameter information is needed for function/operator
00723 * overloading.
00724 ***************************************************************/
00725 
00726 /* G__IFUNCPARA can be defined independently */
00727 #define G__IFUNCPARA
00728 
00729 /* C++ object linkage */
00730 #define G__CPPSTUB     5
00731 #define G__CPPLINK    -1
00732 #define G__CPPLINK1
00733 #define G__CPPLINK2
00734 #define G__CPPLINK3
00735 
00736 /* C object linkage same way as C++ */
00737 #define G__CSTUB       6
00738 #define G__CLINK      -2
00739 
00740 /* define for Reflex cpp source code */
00741 #define R__CPPLINK  -3
00742 
00743 /* Link macro as function */
00744 #define G__MACROLINK  (-5)
00745 
00746 /* Link macro as function */
00747 #define G__METHODLINK  (-6)
00748 #define G__ONLYMETHODLINK  6
00749 
00750 #define G__NOLINK      0
00751 
00752 
00753 
00754 #else /* of G__CPLUSPLUS */
00755 
00756 /***************************************************************
00757 * new comment style   //
00758 ***************************************************************/
00759 #define G__NOCPPCOMMENT
00760 
00761 #endif /* of G__CPLUSPLUS */
00762 
00763 /**************************************************************************
00764 * Table and variable size
00765 *
00766 * CAUTION:
00767 *  Among constants below, changing following parameter cause DLL binary
00768 * incompatibility.
00769 *
00770 *    G__MAXFUNCPARA
00771 *
00772 * Other parameters can be changed while keeping DLL binary compatibility.
00773 *
00774 **************************************************************************/
00775 #ifdef G__LONGBUF
00776 #define G__LONGLINE    4096  /* Length of expression */
00777 #define G__ONELINE     4096  /* Length of subexpression,parameter,argument */
00778 #define G__ONELINEDICT    8  /* Length of subexpression,parameter,argument */
00779 #define G__MAXNAME     4096  /* Variable name */
00780 #else
00781 #define G__LONGLINE    2048  /* Length of expression */
00782 #define G__ONELINE     1024  /* Length of subexpression,parameter,argument */
00783 #define G__MAXNAME      512  /* Variable name */
00784 #define G__ONELINEDICT    8  /* Length of subexpression,parameter,argument */
00785 #endif
00786 #define G__LARGEBUF    6000  /* big temp buffer */
00787 #define G__MAXFILE     2000  /* Max interpreted source file */
00788 #define G__MAXFILENAME 1024  /* Max interpreted source file name length */
00789 #define G__MAXPARA      100  /* Number of argument for G__main(argc,argv)   */
00790 #define G__MAXARG       100  /* Number of argument for G__init_cint(char *) */
00791 #define G__MAXFUNCPARA   40  /* Function argument */
00792 #define G__MAXVARDIM     10  /* Array dimension */
00793 #define G__LENPOST       10  /* length of file name extention */
00794 #define G__MAXBASE       50  /* maximum inheritable class */
00795 #define G__TAGNEST       20  /* depth of nested class */
00796 
00797 #ifdef G__WIN32
00798 #if defined(_MSC_VER) && (_MSC_VER>1300)
00799 #define G__MAXSTRUCT  24000  /* struct table */
00800 #define G__MAXTYPEDEF 24000  /* typedef table */
00801 #else
00802 #define G__MAXSTRUCT   4000  /* struct table */
00803 #define G__MAXTYPEDEF  8000  /* typedef table */
00804 #endif
00805 #else
00806 #define G__MAXSTRUCT  24000  /* struct table */
00807 #define G__MAXTYPEDEF 24000  /* typedef table */
00808 #endif
00809 
00810 /* G__MAXIFUNC and G__MEMDEPTH are not real limit
00811  * They are depth of one page of function or variable list
00812  * If the page gets full, more table is allocated. */
00813 #define G__MAXIFUNC 1
00814 #define G__MEMDEPTH 1
00815 
00816 
00817 /* #define G__HIST     1 */
00818 
00819 /**************************************************************************
00820 * error handling
00821 **************************************************************************/
00822 #define G__TIMEOUT 10   /* Timeout after segv,buserror,etc */
00823 
00824 /**************************************************************************
00825 * variable identity
00826 **************************************************************************/
00827 #define G__AUTO (-1)
00828 #define G__LOCALSTATIC (-2)
00829 #define G__LOCALSTATICBODY (-3)
00830 #define G__COMPILEDGLOBAL  (-4)
00831 #define G__AUTOARYDISCRETEOBJ (-5)
00832 #define G__USING_VARIABLE (-6)
00833 #define G__USING_STATIC_VARIABLE (-7)
00834 
00835 #define G__LOCAL    0
00836 #ifdef G__MEMBERFUNC
00837 #define G__MEMBER   2
00838 #define G__GLOBAL   4
00839 #define G__NOTHING  6
00840 #else
00841 #define G__GLOBAL   2
00842 #endif
00843 
00844 /**************************************************************************
00845 * flag argument to G__getfunction()
00846 **************************************************************************/
00847 #define G__TRYNORMAL         0
00848 #define G__CALLMEMFUNC       1
00849 #define G__TRYMEMFUNC        2
00850 #define G__CALLCONSTRUCTOR   3
00851 #define G__TRYCONSTRUCTOR    4
00852 #define G__TRYDESTRUCTOR     5
00853 #define G__CALLSTATICMEMFUNC 6
00854 #define G__TRYUNARYOPR       7
00855 #define G__TRYBINARYOPR      8
00856 
00857 #ifndef G__OLDIMPLEMENTATINO1250
00858 #define G__TRYIMPLICITCONSTRUCTOR 7
00859 #endif
00860 
00861 /**************************************************************************
00862 * Scope operator category
00863 **************************************************************************/
00864 #define G__NOSCOPEOPR    0
00865 #define G__GLOBALSCOPE   1
00866 #define G__CLASSSCOPE    2
00867 
00868 /*********************************************************************
00869 * variable length string buffer
00870 *********************************************************************/
00871 #define G__LONGLONG    1
00872 #define G__ULONGLONG   2
00873 #define G__LONGDOUBLE  3
00874 
00875 /**************************************************************************
00876 * store environment for stub function casll
00877 *
00878 **************************************************************************/
00879 struct G__StoreEnv {
00880   long store_struct_offset;
00881   int store_tagnum;
00882   int store_memberfunc_tagnum;
00883   int store_exec_memberfunc;
00884 };
00885 
00886 
00887 /**************************************************************************
00888 * struct of pointer to pointer flag
00889 *
00890 * By histrorical reason, cint handles pointer to pointer in following manner.
00891 *
00892 * islower(buf.type)&&G__PARANORMAL==buf.obj.reftype.reftype :object
00893 * isupper(buf.type)&&G__PARANORMAL==buf.obj.reftype.reftype :pointer to object
00894 * isupper(buf.type)&&G__PARAP2P==buf.obj.reftype.reftype    :pointer to pointer
00895 * isupper(buf.type)&&G__PARAP2PP2==buf.obj.reftype.reftype  :pointer to pointer
00896 *                                                            to pointer
00897 **************************************************************************/
00898 struct G__p2p {
00899   long i;
00900   int reftype;
00901 };
00902 
00903 /**************************************************************************
00904 * struct of internal data
00905 *
00906 **************************************************************************/
00907 struct G__DUMMY_FOR_CINT7 {
00908    void* fTypeName;
00909    unsigned int fModifiers;
00910 };
00911 
00912 #ifdef __cplusplus
00913 struct G__value {
00914 #else
00915 typedef struct {
00916 #endif
00917   union {
00918     double d;
00919     long    i; /* used to be int */
00920 #if defined(G__PRIVATE_GVALUE) && !defined(_WIN32)
00921 #if defined(private) && defined(ROOT_RVersion)
00922 #define G__alt_private private
00923 #undef private
00924 #endif
00925 private:
00926 #endif
00927     struct G__p2p reftype;
00928 #if defined(G__PRIVATE_GVALUE) && !defined(_WIN32)
00929 public:
00930 #endif
00931     char ch;
00932     short sh;
00933     int in;
00934     float fl;
00935     unsigned char uch;
00936     unsigned short ush;
00937     unsigned int uin;
00938     unsigned long ulo;
00939     G__int64 ll;
00940     G__uint64 ull;
00941     long double ld;
00942   } obj;
00943 #ifdef G__REFERENCETYPE2
00944   long ref;
00945 #endif
00946 #if defined(G__PRIVATE_GVALUE) && !defined(_WIN32)
00947 private:
00948 #if defined(G__alt_private) && defined(ROOT_RVersion)
00949 #define private public
00950 #endif
00951 #endif
00952   int type;
00953   int tagnum;
00954   int typenum;
00955 #ifndef G__OLDIMPLEMENTATION1259
00956   G__SIGNEDCHAR_T isconst;
00957 #endif
00958   struct G__DUMMY_FOR_CINT7 dummyForCint7;
00959 #ifdef __cplusplus
00960 }
00961 #else
00962 } G__value
00963 #endif
00964 ;
00965 
00966 /**************************************************************************
00967 * reference type argument for precompiled function
00968 **************************************************************************/
00969 #define G__Mfloat(buf)   (buf.obj.fl=(float)G__double(buf))
00970 #define G__Mdouble(buf)  buf.obj.d
00971 #define G__Mchar(buf)    (buf.obj.ch=(char)buf.obj.i)
00972 #define G__Mshort(buf)   (buf.obj.sh=(short)buf.obj.i)
00973 #define G__Mint(buf)     (buf.obj.in=(int)buf.obj.i)
00974 #define G__Mlong(buf)    buf.obj.i
00975 #define G__Muchar(buf)   (buf.obj.uch=(unsigned char)buf.obj.i)
00976 #define G__Mushort(buf)  (buf.obj.ush=(unsigned short)buf.obj.i)
00977 #define G__Muint(buf)    (*(unsigned int*)(&buf.obj.i))
00978 #define G__Mulong(buf)   (*(unsigned long*)(&buf.obj.i))
00979 
00980 
00981 
00982 /**************************************************************************
00983 * include file flags
00984 **************************************************************************/
00985 #define G__USERHEADER 1
00986 #define G__SYSHEADER  2
00987 
00988 
00989 #ifndef G__ANSI
00990 #if (__GNUC__>=3) || defined(_STLPORT_VERSION)
00991 #define G__ANSI
00992 #endif
00993 #endif
00994 /* #define G__ANSI */
00995 
00996 #ifdef __cplusplus
00997 
00998 #ifndef G__ANSI
00999 #define G__ANSI
01000 #endif
01001 #ifndef __CINT__
01002 #define G__CONST const
01003 #else
01004 #define G__CONST
01005 #endif
01006 
01007 #else /* __cplusplus */
01008 
01009 #define G__CONST
01010 
01011 #endif /* __cplusplus */
01012 
01013 extern G__value G__null;
01014 
01015 /**************************************************************************
01016 * struct for variable page buffer
01017 *
01018 **************************************************************************/
01019 #ifndef __CINT__
01020 #define G__VARSIZE  2
01021 #define G__CHARALLOC   sizeof(char)
01022 #define G__SHORTALLOC  sizeof(short)
01023 #define G__INTALLOC    sizeof(int)
01024 #define G__LONGALLOC   sizeof(long)
01025 #define G__FLOATALLOC  sizeof(float)
01026 #define G__DOUBLEALLOC sizeof(double)
01027 #define G__P2MFALLOC   G__sizep2memfunc
01028 #define G__LONGLONGALLOC sizeof(G__int64)
01029 #define G__LONGDOUBLEALLOC sizeof(long double)
01030 #endif /* __CINT__ */
01031 
01032 #ifdef G__TESTMAIN
01033 /* This is only needed for demonstration that cint interprets cint */
01034 #define G__VARSIZE  2
01035 #define G__CHARALLOC   sizeof(char)
01036 #define G__SHORTALLOC  sizeof(short)
01037 #define G__INTALLOC    sizeof(int)
01038 #define G__LONGALLOC   sizeof(long)
01039 #define G__FLOATALLOC  sizeof(float)
01040 #define G__DOUBLEALLOC sizeof(double)
01041 #define G__P2MFALLOC   G__sizep2memfunc
01042 #endif
01043 
01044 /**************************************************************************
01045 * CINT API function return value
01046 *
01047 **************************************************************************/
01048 /* return value of G__init_cint() */
01049 #define G__INIT_CINT_FAILURE         (-1)
01050 #define G__INIT_CINT_SUCCESS          0
01051 #define G__INIT_CINT_SUCCESS_MAIN     1
01052 
01053 /* return value of G__loadfile() */
01054 #define G__LOADFILE_SUCCESS         0
01055 #define G__LOADFILE_DUPLICATE       1
01056 #define G__LOADFILE_FAILURE       (-1)
01057 #define G__LOADFILE_FATAL         (-2)
01058 
01059 /* return value of G__unloadfile() */
01060 #define G__UNLOADFILE_SUCCESS    0
01061 #define G__UNLOADFILE_FAILURE  (-1)
01062 
01063 /* return value of G__pause() */
01064 #define G__PAUSE_NORMAL          0
01065 #define G__PAUSE_IGNORE          1
01066 #define G__PAUSE_STEPOVER        3
01067 #define G__PAUSE_ERROR_OFFSET 0x10
01068 
01069 /* return value of G__interpretedp2f() */
01070 #define G__NOSUCHFUNC              0
01071 #define G__UNKNOWNFUNC             0
01072 #define G__INTERPRETEDFUNC         1
01073 #define G__COMPILEDWRAPPERFUNC     2
01074 #define G__COMPILEDINTERFACEMETHOD 2
01075 #define G__COMPILEDTRUEFUNC        3
01076 #define G__BYTECODEFUNC            4
01077 
01078 /* flags to set to G__ismain */
01079 #define G__NOMAIN                  0
01080 #define G__MAINEXIST               1
01081 #define G__TCLMAIN                 2
01082 
01083 /**************************************************************************
01084 * struct forward declaration; real ones are in common.h
01085 **************************************************************************/
01086 struct G__ifunc_table;
01087 struct G__var_array;
01088 struct G__dictposition;
01089 struct G__comment_info;
01090 struct G__friendtag;
01091 #ifdef G__ASM_WHOLEFUNC
01092 struct G__bytecodefunc;
01093 #endif
01094 struct G__funcentry;
01095 struct G__ifunc_table;
01096 struct G__inheritance;
01097 struct G__var_array;
01098 struct G__tagtable;
01099 struct G__input_file;
01100 #ifdef G__CLINK
01101 struct G__tempobject_list;
01102 #endif
01103 struct G__va_list_para;
01104 
01105 /*********************************************************************
01106 * return status flag
01107 *********************************************************************/
01108 #define G__RETURN_NON       0
01109 #define G__RETURN_NORMAL    1
01110 #define G__RETURN_IMMEDIATE 2
01111 #define G__RETURN_TRY      -1
01112 #define G__RETURN_EXIT1     4
01113 #define G__RETURN_EXIT2     5
01114 
01115 /**************************************************************************
01116 * struct declaration to avoid error (compiler dependent)
01117 **************************************************************************/
01118 struct G__ifunc_table;
01119 struct G__var_array;
01120 struct G__dictposition; /* decl in Api.h because of Cint7's having C++ content */
01121 
01122 /**************************************************************************
01123 * comment information
01124 *
01125 **************************************************************************/
01126 struct G__comment_info {
01127    union {
01128       char  *com;
01129       fpos_t pos;
01130    } p;
01131    int   filenum;
01132 #ifdef __cplusplus
01133    G__comment_info() : filenum(0) { p.com = 0; };
01134 #endif
01135 };
01136 
01137 /**************************************************************************
01138 * ROOT special requirement
01139 *
01140 **************************************************************************/
01141 #define G__NOSTREAMER      0x01
01142 #define G__NOINPUTOPERATOR 0x02
01143 #define G__USEBYTECOUNT    0x04
01144 #define G__HASVERSION      0x08
01145 
01146 struct G__RootSpecial {
01147   char* deffile;
01148   int defline;
01149   char* impfile;
01150   int impline;
01151   int version;
01152   unsigned int instancecount;
01153   unsigned int heapinstancecount;
01154   void* defaultconstructor; /* defaultconstructor wrapper/stub pointer */
01155   struct G__ifunc_table* defaultconstructorifunc; /* defaultconstructor ifunc entry */
01156 };
01157 
01158 /**************************************************************************
01159 * structure for friend function and class
01160 *
01161 **************************************************************************/
01162 struct G__friendtag {
01163   short tagnum;
01164   struct G__friendtag *next;
01165 };
01166 
01167 /**************************************************************************
01168 * structure for function entry
01169 *
01170 **************************************************************************/
01171 #define G__BYTECODE_NOTYET    1
01172 #define G__BYTECODE_FAILURE   2
01173 #define G__BYTECODE_SUCCESS   3
01174 #define G__BYTECODE_ANALYSIS  4 /* ON1164 */
01175 
01176 
01177 /**************************************************************************
01178 * structure for function and array parameter
01179 *
01180 **************************************************************************/
01181 struct G__param {
01182   int paran;
01183   G__value para[G__MAXFUNCPARA];
01184   char parameter[G__MAXFUNCPARA][G__ONELINE];
01185 };
01186 
01187 
01188 #if defined(__cplusplus) && !defined(__CINT__)
01189 }   /* extern C 1 */
01190 #endif
01191 
01192 /**************************************************************************
01193 * Interface Method type
01194 *
01195 **************************************************************************/
01196 #if defined(__cplusplus) && defined(G__CPPIF_EXTERNC) && !defined(__CINT__)
01197 extern "C" {   /* extern C 2 */
01198 #endif
01199 
01200 #if defined(G__ANSIHEADER) || defined(G__ANSI)
01201 typedef int (*G__InterfaceMethod)(G__value*,G__CONST char*,struct G__param*,int);
01202 #else
01203 typedef int (*G__InterfaceMethod)();
01204 #endif
01205 
01206 #ifdef __cplusplus
01207 typedef void (*G__incsetup)(void);
01208 #else  /* __cplusplus */
01209 typedef void (*G__incsetup)();
01210 #endif /* __cplusplus */
01211 
01212 #if defined(__cplusplus) && defined(G__CPPIF_EXTERNC) && !defined(__CINT__)
01213 } /* extern C 2 */
01214 #endif
01215 
01216 #if defined(__cplusplus) && !defined(__CINT__)
01217 extern "C" { /* extern C 3 */
01218 #endif
01219 
01220 /**************************************************************************
01221 * structure for class inheritance
01222 *
01223 **************************************************************************/
01224 #define G__ISDIRECTINHERIT         0x0001
01225 #define G__ISVIRTUALBASE           0x0002
01226 #define G__ISINDIRECTVIRTUALBASE   0x0004
01227 
01228 
01229 /**************************************************************************
01230 * structure for input file
01231 *
01232 **************************************************************************/
01233 struct G__input_file {
01234    FILE *fp;
01235    int line_number;
01236    short filenum;
01237    char name[G__MAXFILENAME];
01238 #ifndef G__OLDIMPLEMENTATION1649
01239    char *str;
01240    unsigned long pos;
01241    int vindex;
01242 #endif
01243 #ifdef __cplusplus
01244    G__input_file() : fp(0),line_number(-1),filenum(-1),str(0),pos(0),vindex(0) { name[0] = 0; }
01245 #endif
01246 };
01247 
01248 /**************************************************************************
01249 * make hash value
01250 *
01251 **************************************************************************/
01252 
01253 #define G__hash(string,hash,len) len=hash=0;while(string[len]!='\0')hash+=string[len++];
01254 
01255 
01256 /**************************************************************************
01257 * Compiled class tagnum table
01258 *
01259 **************************************************************************/
01260 typedef struct {
01261 #ifdef __cplusplus
01262   const char *tagname;
01263 #else
01264   char *tagname;
01265 #endif
01266   char tagtype;
01267   short tagnum;
01268 } G__linked_taginfo;
01269 
01270 /**************************************************************************
01271 * Completion list and function pointer list
01272 *
01273 **************************************************************************/
01274 typedef struct {
01275   char *name;
01276   void (*pfunc)();
01277 } G__COMPLETIONLIST;
01278 
01279 #define G__TEMPLATEMEMFUNC
01280 #ifdef G__TEMPLATEMEMFUNC
01281 /* Doubly linked list of long int, methods are described in tmplt.c */
01282 struct G__IntList {
01283   long i;
01284   struct G__IntList *prev;
01285   struct G__IntList *next;
01286 };
01287 
01288 struct G__Definedtemplatememfunc {
01289   int line;
01290   int filenum;
01291   FILE *def_fp;
01292   fpos_t def_pos;
01293   struct G__Definedtemplatememfunc *next;
01294 };
01295 #endif
01296 
01297 struct G__Templatearg {
01298   int type;
01299   char *string;
01300   char *default_parameter;
01301   struct G__Templatearg *next;
01302 };
01303 
01304 struct G__Definedtemplateclass {
01305   char *name;
01306   int hash;
01307   int line;
01308   int filenum;
01309   FILE *def_fp;
01310   fpos_t def_pos;
01311   struct G__Templatearg *def_para;
01312 #ifdef G__TEMPLATEMEMFUNC
01313   struct G__Definedtemplatememfunc memfunctmplt;
01314 #endif
01315   struct G__Definedtemplateclass *next;
01316   int parent_tagnum;
01317   struct G__IntList *instantiatedtagnum;
01318   int isforwarddecl;
01319   int friendtagnum;
01320   struct G__Definedtemplateclass *specialization;
01321   struct G__Templatearg *spec_arg;
01322 };
01323 
01324 /********************************************************************
01325 * include path by -I option
01326 * Used in G__main() and G__loadfile()
01327 ********************************************************************/
01328 struct G__includepath {
01329   char *pathname;
01330   struct G__includepath *next;
01331 };
01332 
01333 
01334 /**************************************************************************
01335 * pointer to function which is evaluated at pause
01336 **************************************************************************/
01337 extern void (*G__atpause)();
01338 
01339 /**************************************************************************
01340 * pointer to function which is evaluated in G__genericerror()
01341 **************************************************************************/
01342 extern void (*G__aterror)();
01343 
01344 /**************************************************************************
01345 * New handling of pointer to function
01346 *
01347 **************************************************************************/
01348 #ifndef G__NONANSI
01349 #ifndef G__SUNOS4
01350 #define G__FUNCPOINTER
01351 #endif
01352 #endif
01353 
01354 /**************************************************************************
01355 * Bug fix for struct allocation
01356 *
01357 **************************************************************************/
01358 #define G__PVOID ((long)(-1))
01359 #define G__PINVALID 0
01360 
01361 /**********************************************************************
01362 * Multi-byte character handling in comment and string
01363 **********************************************************************/
01364 #define G__MULTIBYTE
01365 
01366 /**************************************************************************
01367 * ASSERTION MACRO
01368 *
01369 **************************************************************************/
01370 #if defined(G__DEBUG) || defined(G__ASM_DBG)
01371 
01372 #define G__ASSERT(f)                                                      \
01373   if(!(f)) fprintf(G__serr                                                \
01374                    ,"cint internal error: %s line %u FILE:%s LINE:%d\n"   \
01375                    ,__FILE__,__LINE__,G__ifile.name,G__ifile.line_number)
01376 
01377 
01378 #else
01379 
01380 #define G__ASSERT(f)  /* NULL */
01381 
01382 #endif
01383 
01384 
01385 #ifndef __CINT__
01386 /**************************************************************************
01387 * Exported Functions
01388 *
01389 **************************************************************************/
01390 #ifdef G__ANSI
01391 #define G__P(funcparam) funcparam
01392 #else
01393 #define G__P(funcparam) ()
01394 #endif
01395 
01396 #if defined(G__DEBUG) && !defined(G__MEMTEST_C)
01397 #include "src/memtest.h"
01398 #endif
01399 
01400 #ifndef G__WILDCARD
01401 #define G__WILDCARD
01402 #endif
01403 
01404 /**************************************************************************
01405  * Variable argument, byte layout policy
01406  **************************************************************************/
01407 #define G__VAARG_SIZE 1024
01408 
01409 typedef struct {
01410   union {
01411     char d[G__VAARG_SIZE];
01412     long i[G__VAARG_SIZE/sizeof(long)];
01413   } x;
01414 } G__va_arg_buf;
01415 
01416 
01417 // cross-compiling for iOS and iOS simulator (assumes host is Intel Mac OS X)
01418 #if defined(R__IOSSIM) || defined(R__IOS)
01419 #ifdef __x86_64__
01420 #define R__x86_64 1
01421 #undef __x86_64__
01422 #endif
01423 #ifdef __i386__
01424 #define R__i386 1
01425 #undef __i386__
01426 #endif
01427 #ifdef R__IOSSIM
01428 #define __i386__ 1
01429 #endif
01430 #ifdef R__IOS
01431 #define __arm__ 1
01432 #endif
01433 #endif
01434 
01435 
01436 #if (defined(__i386__) && (defined(__linux) || defined(__APPLE__))) || \
01437     defined(_WIN32) || defined(G__CYGWIN)
01438 /**********************************************
01439  * Intel architecture, aligns in multiple of 4
01440  *    |1111|22  |3   |44444444|55555555555555  |
01441  **********************************************/
01442 #define G__VAARG_INC_COPY_N 4
01443 
01444 #elif (defined(__linux)&&defined(__ia64__))
01445 /**********************************************
01446  * Itanium/linux, aligns in multiple of 8
01447  **********************************************/
01448 
01449 #define G__VAARG_INC_COPY_N 8
01450 #define G__VAARG_PASS_BY_REFERENCE 8
01451 
01452 #elif defined(__hpux) || defined(__hppa__)
01453 /**********************************************
01454  * HP-Precision Architecture,
01455  *  Args > 8 bytes are passed by reference.  Args > 4 and <= 8 are
01456  *  right-justified in 8 bytes.  Args <= 4 are right-justified in
01457  *  4 bytes.
01458  **********************************************/
01459 /* #define G__VAARG_NOSUPPORT */
01460 
01461 #ifdef __ia64__
01462 #define G__VAARG_INC_COPY_N 8
01463 #else
01464 #define G__VAARG_INC_COPY_N 4
01465 #endif
01466 #define G__VAARG_PASS_BY_REFERENCE 8
01467 
01468 #elif defined(__x86_64__) && (defined(__linux) || defined(__APPLE__) || \
01469       defined(__FreeBSD__) && defined(__sun))
01470 /**********************************************
01471  * AMD64/EM64T
01472  * It turned out it is quite difficult to support this
01473  * platform as it uses registers for passing arguments (first 6 long
01474  * and first 8 double arguments in registers, the remaining on the stack)
01475  * for Linux/gcc.
01476  **********************************************/
01477 
01478 #define G__VAARG_INC_COPY_N 8
01479 /* #define G__VAARG_PASS_BY_REFERENCE 8 */
01480 
01481 #elif defined(__sparc) || defined(__sparc__) || defined(__SUNPRO_C) || \
01482       defined(__SUNPRO_CC)
01483 /**********************************************
01484  * Sun Sparc architecture
01485  * Alignment is similar to Intel, but class/struct
01486  * objects are passed by reference
01487  **********************************************/
01488 /* #define G__VAARG_NOSUPPORT */
01489 
01490 #define G__VAARG_INC_COPY_N 4
01491 #define G__VAARG_PASS_BY_REFERENCE 8
01492 
01493 #elif (defined(__PPC__)||defined(__ppc__))&&(defined(_AIX)||defined(__APPLE__))
01494 /**********************************************
01495  * PowerPC, AIX and Apple Mac
01496  * It turned out it is quite difficult if not impossible to support PowerPC.
01497  * PPC uses registers for passing arguments (general purpose 3-10, floating 1)
01498  **********************************************/
01499 #if !defined(__GNUC__)
01500 /* Looks like gcc3.3 doesn't use registers. */
01501 #define G__VAARG_NOSUPPORT
01502 #endif
01503 #define G__VAARG_INC_COPY_N 4
01504 #define G__VAARG_PASS_BY_REFERENCE 8
01505 
01506 #elif (defined(__PPC__)||defined(__ppc__))&&(defined(__linux)||defined(__linux__))
01507 /**********************************************
01508  * PowerPC, Linux
01509  **********************************************/
01510 #define G__VAARG_INC_COPY_N 4
01511 #define G__VAARG_PASS_BY_REFERENCE 8
01512 
01513 #elif (defined(__mips__)&&defined(__linux__))
01514 /**********************************************
01515 * MIPS, Linux
01516 * 3 different calling conventions:
01517 *                             | mips   | mipsn32   | mips64
01518 *                             | mipsel | mipsn32el | mips64el
01519 *  ---------------------------+--------+---------------------
01520 *  G__VAARG_INC_COPY_N        |   4    |     8     |    8
01521 *  G__VAARG_PASS_BY_REFERENCE |   4    |     8     |    8
01522 *
01523 * Assuming that
01524 *    G__VAARG_INC_COPY_N
01525 *       is meant to be the size of the argument registers,
01526 *    G__VAARG_PASS_BY_REFERENCE
01527 *       is the number of arguments passed by reference through
01528 *       registers.
01529 *
01530 * Thanks to Thiemo Seufer <ths@networkno.de> of Debian
01531 **********************************************/
01532 # if _MIPS_SIM == _ABIO32 /* mips or mipsel */
01533 #  define G__VAARG_INC_COPY_N 4
01534 #  define G__VAARG_PASS_BY_REFERENCE 4
01535 # elif _MIPS_SIM == _ABIN32 /* mipsn32 or mipsn32el */
01536 #  define G__VAARG_INC_COPY_N 8
01537 #  define G__VAARG_PASS_BY_REFERENCE 8
01538 # elif _MIPS_SIM == _ABI64 /* mips64 or mips64el */
01539 #  define G__VAARG_INC_COPY_N 8
01540 #  define G__VAARG_PASS_BY_REFERENCE 8
01541 # else
01542 #  define G__VAARG_NOSUPPORT
01543 # endif
01544 #else
01545 /**********************************************
01546  * Other platforms,
01547  *  Try copying object as value.
01548  **********************************************/
01549 #define G__VAARG_NOSUPPORT
01550 #define G__VAARG_INC_COPY_N 4
01551 /* #define G__VAARG_PASS_BY_REFERENCE 8 */
01552 
01553 #endif
01554 
01555 // cross-compiling for iOS and iOS simulator (assumes host is Intel Mac OS X)
01556 #if defined(R__IOSSIM) || defined(R__IOS)
01557 #undef __i386__
01558 #undef __arm__
01559 #ifdef R__x86_64
01560 #define __x86_64__ 1
01561 #endif
01562 #ifdef R__i386
01563 #define __i386__ 1
01564 #endif
01565 #endif
01566 
01567 struct G__va_list_para {
01568   struct G__param *libp;
01569   int i;
01570 };
01571 
01572 extern G__EXPORT G__value (*G__GetSpecialObject) (G__CONST char *name,void **ptr,void** ppdict);
01573 extern G__EXPORT int (*G__ScriptCompiler)(G__CONST char*,G__CONST char*);
01574 
01575 typedef int (*G__IgnoreInclude) G__P((const char* fname,const char* expandedfname));
01576 typedef void G__parse_hook_t ();
01577 
01578 /**********************************************
01579  * Exported Functions
01580  *
01581  **********************************************/
01582 
01583 #ifndef G__DECL_API
01584 # ifndef G__MULTITHREADLIBCINT
01585 #  ifdef __cplusplus
01586 #    define G__DUMMYTOCHECKFORDUPLICATES_CONCAT(A,B) A##B
01587 #    define G__DUMMYTOCHECKFORDUPLICATES(IDX) namespace{class G__DUMMYTOCHECKFORDUPLICATES_CONCAT(this_API_function_index_occurs_more_than_once_,IDX) {};}
01588 #  else
01589 #    define G__DUMMYTOCHECKFORDUPLICATES(IDX)
01590 #  endif
01591 #  define G__DECL_API(IDX, RET, NAME, ARGS) \
01592    G__EXPORT RET NAME ARGS ; G__DUMMYTOCHECKFORDUPLICATES(IDX)
01593 # else
01594 #  define G__DUMMYTOCHECKFORDUPLICATES(IDX)
01595 #  define G__DECL_API(IDX, RET, NAME, ARGS) \
01596      static RET (* NAME ) ARGS = 0;
01597 # endif
01598 #endif /*G__DECL_API*/
01599 
01600 #include "G__ci_fproto.h"
01601 
01602 #ifdef G__MULTITHREADLIBCINT
01603 /* second round, now setting func ptrs */
01604 
01605 # undef  G__DUMMYTOCHECKFORDUPLICATES
01606 # define G__DUMMYTOCHECKFORDUPLICATES(IDX)
01607 # ifdef G__MULTITHREADLIBCINTC
01608 #  define G__SET_CINT_API_POINTERS_FUNCNAME G__SetCCintApiPointers
01609 # else
01610 #  define G__SET_CINT_API_POINTERS_FUNCNAME G__SetCppCintApiPointers
01611 # endif
01612 # undef G__DECL_API
01613 # define G__DECL_API(IDX, RET, NAME, ARGS) \
01614      NAME = (RET (*) ARGS) a[IDX];
01615 
01616 G__EXPORT void G__SET_CINT_API_POINTERS_FUNCNAME (void *a[G__NUMBER_OF_API_FUNCTIONS]) {
01617 #include "G__ci_fproto.h"
01618 }
01619 
01620 #endif /* G__MULTITHREADLIBCINT */
01621 /**************************************************************************
01622  * end of Exported Cint API functions
01623  **************************************************************************/
01624 
01625 #endif /* __CINT__ */
01626 
01627 #if defined(G__WIN32)
01628 #ifndef snprintf
01629 #define snprintf _snprintf
01630 #endif
01631 #endif
01632 
01633 #if defined(G__WIN32) && (!defined(G__SYMANTEC)) && defined(G__CINTBODY)
01634 /* ON562 , this used to be test for G__SPECIALSTDIO */
01635 /************************************************************************
01636 * Dummy I/O function for all Win32 based application
01637 ************************************************************************/
01638 #ifdef printf
01639 #undef printf
01640 #endif
01641 #ifdef fprintf
01642 #undef fprintf
01643 #endif
01644 #ifdef fputc
01645 #undef fputc
01646 #endif
01647 #ifdef putc
01648 #undef putc
01649 #endif
01650 #ifdef putchar
01651 #undef putchar
01652 #endif
01653 #ifdef fputs
01654 #undef fputs
01655 #endif
01656 #ifdef puts
01657 #undef puts
01658 #endif
01659 #ifdef fgets
01660 #undef fgets
01661 #endif
01662 #ifdef gets
01663 #undef gets
01664 #endif
01665 #ifdef tmpfile
01666 #undef tmpfile
01667 #endif
01668 #define printf  G__printf
01669 #define fprintf G__fprintf
01670 #define fputc   G__fputc
01671 #define putc    G__fputc
01672 #define putchar G__putchar
01673 #define fputs   G__fputs
01674 #define puts    G__puts
01675 #define fgets   G__fgets
01676 #define gets    G__gets
01677 #define system  G__system
01678 #define tmpfile G__tmpfile
01679 
01680 int G__fputc G__P((int character,FILE *fp));
01681 int G__putchar G__P((int character));
01682 int G__fputs G__P((char *string,FILE *fp));
01683 int G__puts G__P((char *string));
01684 char *G__fgets G__P((char *string,int n,FILE *fp));
01685 char *G__gets G__P((char *buffer));
01686 int G__system G__P((char *com));
01687 FILE *G__tmpfile(void);
01688 
01689 #ifdef G__SPECIALSTDIO
01690 
01691 /* THIS IS AN OLD WILDC++ IMPLEMENTATION */
01692 /* signal causes problem in Windows-95 with Tcl/Tk */
01693 #define signal(sigid,p2f)  NULL
01694 #define alarm(time)        NULL
01695 
01696 #else /* G__SPECIALSTDIO */
01697 
01698 #ifdef signal
01699 #undef signal
01700 #endif
01701 #define signal G__signal
01702 #define alarm(time)        NULL
01703 typedef void (*G__signaltype)(int,void (*)(int));
01704 G__signaltype G__signal G__P((int sgnl,void (*f)(int)));
01705 
01706 #endif /* G__SPECIALSTDIO */
01707 
01708 #endif /* WIN32 !SYMANTEC CINTBODY*/
01709 /**************************************************************************
01710 * end of specialstdio or win32
01711 **************************************************************************/
01712 
01713 /***********************************************************************/
01714 #if defined(__cplusplus) && !defined(__CINT__)
01715 } /* extern C 3 */
01716 #endif
01717 
01718 /***********************************************************************/
01719 #if defined(__cplusplus) && !defined(__CINT__)
01720 /* Helper class to avoid compiler warning about casting function pointer
01721 ** to void pointer.
01722 */
01723 class G__func2void {
01724    typedef void (*funcptr_t)();
01725 
01726    union funcptr_and_voidptr {
01727       typedef void (*funcptr_t)();
01728 
01729       funcptr_and_voidptr(void *val) : _read(val) {}
01730 
01731       void *_read;
01732       funcptr_t _write;
01733    };
01734 
01735    funcptr_and_voidptr _tmp;
01736 public:
01737    template <typename T>
01738    G__func2void( T vfp ) : _tmp(0) {
01739       _tmp._write = ( funcptr_t )vfp;
01740    }
01741 
01742    operator void* () const {
01743       return _tmp._read;
01744    }
01745 };
01746 #elif !__CINT__
01747 typedef union {
01748    void *_read;
01749    void (*_write)();
01750 } funcptr_and_voidptr;
01751 #endif /* __cplusplus  && ! __CINT__*/
01752 
01753 #endif /* __MAKECINT__ */
01754 /**************************************************************************
01755 * endif #ifndef G__MAKECINT
01756 **************************************************************************/
01757 
01758 
01759 
01760 #endif /* G__CI_H */

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