1    	/* /% C %/ */
2    	/***********************************************************************
3    	 * cint (C/C++ interpreter)
4    	 ************************************************************************
5    	 * CINT header file G__ci.h
6    	 ************************************************************************
7    	 * Description:
8    	 *  C/C++ interpreter header file
9    	 ************************************************************************
10   	 * Copyright(c) 1995~2007  Masaharu Goto (root-cint@cern.ch)
11   	 *
12   	 * For the licensing terms see the file COPYING
13   	 *
14   	 ************************************************************************/
15   	
16   	#ifndef G__CI_H
17   	#define G__CI_H
18   	
19   	#ifndef G__CINT_VER6
20   	#define G__CINT_VER6  1
21   	#endif
22   	
23   	#define G__CINTVERSION_V6      60030000
24   	#define G__CINTVERSIONSTR_V6  "6.03.00, July 2, 2010"
25   	#define G__CINTVERSION_V5      50180000
26   	#define G__CINTVERSIONSTR_V5  "5.18.00, July 2, 2010"
27   	
28   	#define G__ALWAYS
29   	/* #define G__NEVER */
30   	/**********************************************************************
31   	* SPECIAL CHANGES and CINT CORE COMPILATION SWITCH
32   	**********************************************************************/
33   	
34   	#define G__NATIVELONGLONG 1
35   	
36   	#ifndef G__CINT_VER6
37   	#define G__OLDIMPLEMENTATION2187
38   	#define G__OLDIMPLEMENTATION2184
39   	#define G__OLDIMPLEMENTATION2182
40   	#define G__OLDIMPLEMENTATION2177
41   	#define G__OLDIMPLEMENTATION2172
42   	#define G__OLDIMPLEMENTATION2171
43   	#define G__OLDIMPLEMENTATION2170
44   	#define G__OLDIMPLEMENTATION2169
45   	#define G__OLDIMPLEMENTATION2163
46   	#define G__OLDIMPLEMENTATION2162
47   	#define G__OLDIMPLEMENTATION2161
48   	#define G__OLDIMPLEMENTATION2160
49   	#define G__OLDIMPLEMENTATION2159
50   	#define G__OLDIMPLEMENTATION2156
51   	#define G__OLDIMPLEMENTATION2155
52   	#define G__OLDIMPLEMENTATION2154
53   	#define G__OLDIMPLEMENTATION2153
54   	#define G__OLDIMPLEMENTATION2152
55   	#define G__OLDIMPLEMENTATION2151
56   	#define G__OLDIMPLEMENTATION2150
57   	#define G__OLDIMPLEMENTATION2148
58   	#define G__OLDIMPLEMENTATION2147
59   	#define G__OLDIMPLEMENTATION2146
60   	#define G__OLDIMPLEMENTATION2143
61   	#define G__OLDIMPLEMENTATION2142
62   	#define G__OLDIMPLEMENTATION2141
63   	#define G__OLDIMPLEMENTATION2140
64   	#define G__OLDIMPLEMENTATION2138
65   	#define G__OLDIMPLEMENTATION2137
66   	#define G__OLDIMPLEMENTATION2136
67   	#define G__OLDIMPLEMENTATION2135
68   	#define G__OLDIMPLEMENTATION2134
69   	#define G__OLDIMPLEMENTATION2133
70   	#define G__OLDIMPLEMENTATION2132
71   	#define G__OLDIMPLEMENTATION2131
72   	#define G__OLDIMPLEMENTATION2129
73   	#define G__OLDIMPLEMENTATION2128
74   	#define G__OLDIMPLEMENTATION2127
75   	#define G__OLDIMPLEMENTATION2122
76   	#define G__OLDIMPLEMENTATION2117
77   	#define G__OLDIMPLEMENTATION2116
78   	/* #define G__OLDIMPLEMENTATION2115 */
79   	/* #define G__OLDIMPLEMENTATION2114 */
80   	#define G__OLDIMPLEMENTATION2112
81   	#define G__OLDIMPLEMENTATION2111
82   	#define G__OLDIMPLEMENTATION2110
83   	#define G__OLDIMPLEMENTATION2109
84   	#define G__OLDIMPLEMENTATION2105
85   	#define G__OLDIMPLEMENTATION2102
86   	#define G__OLDIMPLEMENTATION2089
87   	#define G__OLDIMPLEMENTATION2087
88   	#define G__OLDIMPLEMENTATION2084
89   	#define G__OLDIMPLEMENTATION2075
90   	#define G__OLDIMPLEMENTATION2074
91   	#define G__OLDIMPLEMENTATION2073
92   	#define G__OLDIMPLEMENTATION2067
93   	#define G__OLDIMPLEMENTATION2066
94   	#define G__OLDIMPLEMENTATION2062
95   	#define G__OLDIMPLEMENTATION2058
96   	/* #define G__OLDIMPLEMENTATION2057 */
97   	/* #define G__OLDIMPLEMENTATION2056 */
98   	#define G__OLDIMPLEMENTATION2054
99   	#define G__OLDIMPLEMENTATION2051
100  	#define G__OLDIMPLEMENTATION2042
101  	#define G__OLDIMPLEMENTATION1073
102  	#endif
103  	
104  	#ifdef G__ROOT
105  	/* Disable the new stack variable manager */
106  	#define G__OLDIMPLEMENTATION1073
107  	#endif
108  	
109  	/* Native long long, unsigned long long, long double implementation */
110  	#ifndef G__NATIVELONGLONG
111  	#define G__OLDIMPLEMENTATION2189
112  	#define G__OLDIMPLEMENTATION2192
113  	#endif
114  	
115  	/* Problem remains with autoloading if library is unloaded. Tried to fix it
116  	 * with 2015, but this has problem with ROOT. */
117  	#define G__OLDIMPLEMENTATION2015
118  	
119  	
120  	/* If you have problem compiling dictionary with static member function,
121  	 * define following macro. */
122  	/* #define G__OLDIMPLEMENTATION1993 */
123  	
124  	/* 1987 fixes the same problem. Turned off because of redundancy. */
125  	#define G__OLDIMPLEMENTATION1986
126  	
127  	/* suppress unused parameter warnings. optional */
128  	#ifndef G__SUPPRESS_UNUSEDPARA
129  	#define G__OLDIMPLEMENTATION1911
130  	#endif
131  	
132  	/* &a, avoid uninitialized memory access */
133  	/* #define G__AVOID_PTR_UNINITACCESS */  /* Turned out this fix was wrong */
134  	#ifndef G__AVOID_PTR_UNINITACCESS
135  	#define G__OLDIMPLEMENTATION1942
136  	#endif
137  	
138  	/* Define G__FIX1 if you have problem defining variable argument functions
139  	 * such as printf, fprintf, etc... in Windows */
140  	/* #define G__FIX1 */
141  	
142  	/* 1885 has side-effect in building ROOT */
143  	#define G__OLDIMPLEMENTATION1885
144  	
145  	/* 1770 changes implementation of skipping function implementation during
146  	 * prerun. In order to activate new implementation, comment out following
147  	 * line */
148  	#define G__OLDIMPLEMENTATION1770
149  	
150  	
151  	/* Change 1706, regarding function overriding, is very risky. So, this is
152  	 * deactivated for now. With this change turned on, loading and unloading
153  	 * of interpreted and compiled function can be done more robustly. */
154  	#define G__OLDIMPLEMENTATION1706
155  	
156  	/* Rootcint's default link status has been changed from 5.15.57.
157  	 * Define following macro if new scheme has problems. */
158  	/* #define G__OLDIMPLEMENTATION1700 */
159  	
160  	/* For a machine which has unaddressable bool */
161  	#ifndef G__UNADDRESSABLEBOOL
162  	#if defined(__APPLE__) && defined(__ppc__)
163  	/* Fons, if you find problems, comment out G__BOOL4BYTE and uncomment
164  	 * G__UNADDRESSABLEBOOL. Thanks */
165  	#define G__BOOL4BYTE
166  	/* #define G__UNADDRESSABLEBOOL */
167  	#endif
168  	#endif
169  	
170  	/* Speed up G__strip_quotation */
171  	#ifdef G__ROOT
172  	#ifndef G__CPPCONSTSTRING
173  	#define G__CPPCONSTSTRING
174  	#endif
175  	#endif
176  	
177  	/* Activate pointer to member function handling in interpreted code.
178  	 * Seamless access of pointer to member between interpreted and compiled code
179  	 * is not implemented yet. */
180  	#ifndef G__PTR2MEMFUNC
181  	#define G__PTR2MEMFUNC
182  	#endif
183  	
184  	/* 1649 is not ready yet */
185  	/* #define G__OLDIMPLEMENTATION1649 */
186  	
187  	/* Define following macro in order to disable iostream I/O redirection */
188  	/* #define G__OLDIMPLEMENTATION1635 */
189  	
190  	/* Define following macro to enable multi-thread safe libcint and DLL
191  	 * features. */
192  	/* #define G__MULTITHREADLIBCINT */
193  	
194  	/* Define G__ERRORCALLBACK to activat error message redirection. If
195  	 * G__ERRORCALLBACK is defined, a user can set a callback routine for
196  	 * handling error message by G__set_errmsgcallback() API */
197  	#ifndef G__ERRORCALLBACK
198  	#define G__ERRORCALLBACK
199  	#endif
200  	
201  	/* 2001 masks G__ateval overloading resolution error. It turns out this is
202  	 * not a good way, the feature is turned off */
203  	#define G__OLDIMPLEMENTATION2001
204  	
205  	/* Define following macros if you want to store where global variables
206  	 * and typedefs are defined in source files. Reason of not making this
207  	 * default is because it breaks DLL compatibility. */
208  	#define G__VARIABLEFPOS
209  	#define G__TYPEDEFFPOS
210  	
211  	/* If you use old g++ and having problem compiling dictionary with
212  	 * true pointer to function with const return value, define following
213  	 * macro to workaround the problem. */
214  	/* #define G__OLDIMPLEMENTATION1328 */
215  	
216  	/* Define G__CONSTNESSFLAG for activating function overloading by
217  	 * object constness. */
218  	#define G__CONSTNESSFLAG
219  	#ifndef G__CONSTNESSFLAG
220  	#define G__OLDIMPLEMENTATION1258 /* create func entry w/wo func constness */
221  	#define G__OLDIMPLEMENTATION1259 /* add isconst in G__value and set it */
222  	#define G__OLDIMPLEMENTATION1260 /* use isconst info for func overloading */
223  	#endif
224  	
225  	/* New function overloading resolution algorithm which is closer to
226  	 * ANSI/ISO standard is implemented from cint5.14.35. This is a major
227  	 * change and there are some risks. Define following macro in order to
228  	 * use old algorithm. */
229  	/* #define G__OLDIMPLEMENTATION1290 */
230  	
231  	/* Define G__EXCEPTIONWRAPPER for activating C++ exception catching
232  	 * when calling precompiled function. It is better to define this macro
233  	 * in platform dependency file OTHMACRO flag. Reason of not making this
234  	 * default is because some old compilers may not support exception. */
235  	/* #define G__EXCEPTIONWRAPPER */
236  	
237  	/* Define G__STD_EXCEPTION for using std::exception in exception handler.
238  	 * If G__STD_EXCEPTION is defined, G__EXCEPTIONWRAPPER is also defined. */
239  	/* #define G__STD_EXCEPTION */
240  	
241  	/* If you define G__REFCONV in platform dependency file, bug fix for
242  	 * reference argument conversion is activated. This macro breaks DLL
243  	 * compatibility between cint5.14.14 and 5.14.15. If you define
244  	 * G__REFCONV, cint5.14.15 or newer version can load older DLL. But
245  	 * cint5.14.14 or older version can not load DLL that is created by
246  	 * cint5.14.15 or later cint. */
247  	#define G__REFCONV
248  	
249  	/* This change activates bytecode compilation of class object
250  	 * instantiation in a function. Because the change includes some
251  	 * problems , it is turned off at this moment by defining following
252  	 * macro. */
253  	#ifdef G__OLDIMPLEMENTATION1073
254  	/* define related macros here */
255  	#endif
256  	
257  	/* Scott Snyder's modification Apr1999 9.Improvements for `variable' macros.
258  	 * Comment out line below to activate the change */
259  	#define G__OLDIMPLEMENTATION1062
260  	
261  	/* Scott Snyder's modification Apr1999 10.More CRLF problems
262  	 * Comment out line below to activate the change */
263  	#define G__OLDIMPLEMENTATION1063
264  	
265  	/* Scott Snyder's modification in macro.c around line 709. Apr1999
266  	 * Uncomment following line to use 969 version */
267  	/* #define G__OLDIMPLEMENTATION973 */
268  	
269  	
270  	/* Unlimited number of function arguments. THIS MODIFICATION IS TURNED OFF
271  	 * because the change did not work. I decided to keep the code somehow. */
272  	#define G__OLDIMPLEMENTATION834
273  	
274  	/**********************************************************************
275  	* END OF SPECIAL CHANGES and CINT CORE COMPILATION SWITCH
276  	**********************************************************************/
277  	
278  	/**************************************************************************
279  	* One of following macro has to be defined to fix DLL global function
280  	* conflict problem. G__CPPIF_STATIC is recommended. Define G__CPPIF_PROJNAME
281  	* only if G__CPPIF_STATIC has problem with your compiler.
282  	**************************************************************************/
283  	#ifdef G__CPPIF_EXTERNC
284  	#ifndef G__CPPIF_PROJNAME
285  	#define G__CPPIF_PROJNAME
286  	#endif
287  	#ifdef G__CPPIF_STATIC
288  	#undef G__CPPIF_STATIC
289  	#endif
290  	#endif
291  	
292  	#ifndef G__CPPIF_PROJNAME
293  	#ifndef G__CPPIF_STATIC
294  	#define G__CPPIF_STATIC
295  	#endif
296  	#endif
297  	
298  	/**************************************************************************
299  	* G__reftype, var->reftype[], ifunc->reftype[] flag
300  	**************************************************************************/
301  	#define G__PARANORMAL       0
302  	#define G__PARAREFERENCE    1
303  	#define G__PARAP2P          2
304  	#define G__PARAP2P2P        3
305  	
306  	#define G__PARAREF         100
307  	#define G__PARAREFP2P      102
308  	#define G__PARAREFP2P2P    103
309  	
310  	/**************************************************************************
311  	* if __MAKECINT__ is defined, do not include this file
312  	* G__MAKECINT is automatically defined in makecint or G__makesetup script
313  	**************************************************************************/
314  	#if (!defined(__MAKECINT__)) || defined(G__API) || defined(G__BC_DICT)
315  	
316  	
317  	#ifdef __cplusplus
318  	#ifndef G__ANSIHEADER
319  	#define G__ANSIHEADER
320  	#endif
321  	#endif
322  	
323  	#ifdef __SC__
324  	#ifndef G__SYMANTEC
325  	#define G__SYMANTEC
326  	#endif
327  	#endif
328  	
329  	#ifdef __QNX__
330  	#ifndef G__QNX
331  	#define G__QNX
332  	#endif
333  	#endif
334  	
335  	#ifdef _MSC_VER
336  	#ifndef G__VISUAL
337  	#define G__VISUAL 1
338  	#endif
339  	#ifndef G__MSC_VER
340  	#define G__MSC_VER
341  	#endif
342  	#endif
343  	
344  	#if defined(__BORLANDC__) || defined(__BCPLUSPLUS) || defined(__BCPLUSPLUS__) || defined(G__BORLANDCC5)
345  	#ifndef G__BORLAND
346  	#define G__BORLAND
347  	#endif
348  	#endif
349  	
350  	#ifdef G__BORLANDCC5
351  	#define G__SHAREDLIB
352  	#define G__DLL_SYM_UNDERSCORE
353  	#define G__WIN32
354  	#define G__ANSI
355  	#define G__P2FCAST
356  	#define G__REDIRECTIO
357  	#define G__DETECT_NEWDEL
358  	#define G__POSIX
359  	#define G__STD_EXCEPTION
360  	#endif
361  	
362  	#if defined(_WIN32) || defined(_WINDOWS) || defined(_Windows) || defined(_WINDOWS_)
363  	#ifndef G__WIN32
364  	#define G__WIN32
365  	#endif
366  	#endif
367  	
368  	/* added by Fons Radamakers in 2000 Oct 2 */
369  	#if (defined(__linux) || defined(__linux__) || defined(linux)) && ! defined(__CINT__)
370  	#   include <features.h>
371  	#   if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2
372  	#      define G__NONSCALARFPOS2
373  	#   endif
374  	#endif
375  	
376  	/***********************************************************************
377  	 * Native long long support
378  	 ***********************************************************************/
379  	#if defined(G__WIN32) && !defined(__CINT__)
380  	typedef __int64            G__int64;
381  	typedef unsigned __int64   G__uint64;
382  	#else
383  	typedef long long          G__int64;
384  	typedef unsigned long long G__uint64;
385  	#endif
386  	
387  	
388  	
389  	/***********************************************************************
390  	 * Something that depends on platform
391  	 ***********************************************************************/
392  	
393  	#define ENABLE_CPP_EXCEPTIONS 1
394  	
395  	/* Exception */
396  	#if defined(G__WIN32) && !defined(G__STD_EXCEPTION)
397  	#define G__STD_EXCEPTION
398  	#endif
399  	#if defined(G__STD_EXCEPTION) && !defined(G__EXCEPTIONWRAPPER) && !defined(G__APIIF)
400  	#define G__EXCEPTIONWRAPPER
401  	#endif
402  	
403  	/* Error redirection ,  G__fprinterr */
404  	#if defined(G__WIN32) && !defined(G__ERRORCALLBACK)
405  	#define G__ERRORCALLBACK
406  	#endif
407  	#ifndef G__ERRORCALLBACK
408  	#define G__OLDIMPLEMENTATION1485
409  	#define G__OLDIMPLEMENTATION2000
410  	#endif
411  	
412  	/* temporary file generation */
413  	#if defined(G__WIN32)
414  	#define G__TMPFILE
415  	#endif
416  	
417  	
418  	/***********************************************************************
419  	 * Define G__EH_DUMMY_DELETE in order to avoid some compiler dependency
420  	 * about 'void operator delete(void*,[DLLID]_tag*);'
421  	 ***********************************************************************/
422  	#if defined(__HP_aCC) || defined(G__VISUAL) || defined(__INTEL_COMPILER)
423  	#define G__EH_DUMMY_DELETE
424  	#endif
425  	
426  	#ifdef G__NONANSI
427  	#ifdef G__ANSIHEADER
428  	#undef G__ANSIHEADER
429  	#endif
430  	#endif
431  	
432  	#ifndef G__IF_DUMMY
433  	#define G__IF_DUMMY /* avoid compiler warning */
434  	#endif
435  	
436  	#if defined(G__BORLAND) || defined(G__VISUAL)
437  	#define G__DLLEXPORT __declspec(dllexport)
438  	#define G__DLLIMPORT __declspec(dllimport)
439  	#else
440  	#define G__DLLEXPORT
441  	#define G__DLLIMPORT
442  	#endif
443  	
444  	#if (defined(G__BORLAND)||defined(G__VISUAL)||defined(G__CYGWIN)) && defined(G__CINTBODY) && !defined(__CINT__)
445  	#define G__EXPORT __declspec(dllexport)
446  	#else
447  	#define G__EXPORT
448  	#endif
449  	
450  	
451  	
452  	#if defined(G__SIGNEDCHAR)
453  	typedef signed char G__SIGNEDCHAR_T;
454  	#else
455  	typedef char G__SIGNEDCHAR_T;
456  	#endif
457  	
458  	#include <math.h>
459  	#include <stdio.h>
460  	#include <string.h>
461  	#include <stddef.h>
462  	#include <stdlib.h>
463  	#include <signal.h>
464  	#include <assert.h>
465  	#include <limits.h>
466  	#include <setjmp.h>
467  	/* #include <time.h> */
468  	#include <ctype.h>
469  	#include <fcntl.h>
470  	
471  	
472  	
473  	#if defined(__cplusplus) && !defined(__CINT__)
474  	extern "C" {   /* extern C 1 */
475  	#endif
476  	
477  	#ifndef G__WIN32
478  	#include <unistd.h>
479  	#endif
480  	
481  	#ifdef G__REGEXP
482  	#include <regex.h>
483  	#endif
484  	
485  	#ifdef G__REGEXP1
486  	#include <libgen.h>
487  	#endif
488  	
489  	#if   defined(G__SUNOS4)
490  	#include "src/sunos.h"
491  	#elif defined(G__NEWSOS4) || defined(G__NEWSOS6)
492  	#include "src/newsos.h"
493  	#elif defined(G__NONANSI)
494  	#include "src/sunos.h"
495  	#endif
496  	
497  	
498  	#define G__DUMPFILE
499  	#define G__DOSHUGE
500  	
501  	
502  	#ifndef G__REFCONV
503  	#define G__OLDIMPLEMENTATION1167
504  	#endif
505  	
506  	
507  	/* Special typeinfo enhacement for Fons Rademaker's request */
508  	#define G__FONS_TYPEINFO
509  	#define G__FONS_COMMENT
510  	#define G__FONS_ROOTSPECIAL
511  	#define G__ROOTSPECIAL
512  	
513  	/**********************************************************************
514  	* Function call stack
515  	**********************************************************************/
516  	#define G__SHOWSTACK
517  	#define G__VAARG
518  	
519  	/**************************************************************************
520  	* Dump function calls to '-d [dumpfile]', if G__DUMPFILE is defined.
521  	*
522  	**************************************************************************/
523  	
524  	/**************************************************************************
525  	* Interpreter Security mode
526  	*
527  	**************************************************************************/
528  	#define G__SECURITY
529  	
530  	#ifdef G__SECURITY
531  	
532  	/* #include "include/security.h" */
533  	
534  	#define G__NOERROR            0x0000
535  	#define G__RECOVERABLE        0x0001
536  	#define G__DANGEROUS          0x0002
537  	#define G__FATAL              0x0004
538  	
539  	#ifdef G__64BIT
540  	typedef unsigned int G__UINT32 ;
541  	#else
542  	typedef unsigned long G__UINT32 ;
543  	#endif
544  	
545  	#if (defined(G__SGICC) || defined(G__DECCXX)) && defined(G__ROOT)
546  	#define G__CHECK(ITEM,COND,ACTION)                                       \
547  	 if((G__security=G__SECURE_LEVEL0)&&(G__security&ITEM) && (COND) && G__security_handle(ITEM)) ACTION
548  	#else
549  	#define G__CHECK(ITEM,COND,ACTION)                                       \
550  	 if((G__security&ITEM) && (COND) && G__security_handle(ITEM)) ACTION
551  	#endif
552  	
553  	#define G__CHECKDRANGE(p,low,up) \
554  	 if(G__check_drange(p,low,up,G__double(libp->para[p]),result7,funcname)) \
555  	   return(1)
556  	
557  	#define G__CHECKLRANGE(p,low,up) \
558  	 if(G__check_lrange(p,low,up,G__int(libp->para[p]),result7,funcname)) return(1)
559  	
560  	#define G__CHECKTYPE(p,t1,t2) \
561  	 if(G__check_type(p,t1,t2,&libp->para[p],result7,funcname)) return(1)
562  	
563  	#define G__CHECKNONULL(p,t) \
564  	 if(G__check_nonull(p,t,&libp->para[p],result7,funcname)) return(1)
565  	
566  	#define G__CHECKNPARA(n) \
567  	 if(n!=libp->paran) { \
568  	    G__printerror(funcname,n,libp->paran); \
569  	    *result7=G__null; \
570  	    return(1); \
571  	 }
572  	
573  	#else /* G__SECURITY */
574  	
575  	#define G__CHECK(ITEM,COND,ACTION)   NULL
576  	#define G__CHECKDRANE(p,up,low)  NULL
577  	#define G__CHECKLRANE(p,up,low)  NULL
578  	#define G__CHECKNONULL(p)  NULL
579  	#define G__CHECKNPARA(n)  NULL
580  	
581  	#endif /* G__SECURITY */
582  	
583  	
584  	/**************************************************************************
585  	* True pointer to global function
586  	*
587  	**************************************************************************/
588  	#define G__TRUEP2F
589  	
590  	/**************************************************************************
591  	* Whole function compilation
592  	*
593  	**************************************************************************/
594  	#define G__ASM_FUNC
595  	#define G__ASM_WHOLEFUNC
596  	
597  	/**************************************************************************
598  	* C++  evolution has begun from revision 3.0.10.
599  	*
600  	* Define macro 'G__CPLUSPLUS' for C++ version.
601  	* If G__CPLUSPLUS is not defined, all C++ features are turned off. In this
602  	* case it must be compatible with 3.0.9.
603  	**************************************************************************/
604  	#define G__CPLUSPLUS
605  	
606  	
607  	
608  	#ifdef G__CPLUSPLUS
609  	
610  	/**********************************************************************
611  	* Object oriented feature of C++
612  	**********************************************************************/
613  	
614  	/* Create default assignment operator for new C++ linkage */
615  	/* #define G__DEFAULTASSIGNOPR */
616  	
617  	/* virtual base class */
618  	#define G__VIRTUALBASE
619  	
620  	/* new inheritance implementation */
621  	#define G__NEWINHERIT
622  	
623  	/* Friend class and function */
624  	#define G__FRIEND
625  	
626  	/* Run time type information */
627  	#define G__TYPEINFO
628  	
629  	/* new, delete operator */
630  	#define G__NEWDELETE
631  	#define G__NEWDELETE_YET
632  	
633  	/* destructor */
634  	#define G__DESTRUCTOR
635  	
636  	/* constructor */
637  	#define G__CONSTRUCTOR
638  	#define G__COPYCONSTRUCTOR
639  	
640  	/* member function */
641  	#define G__MEMBERFUNC
642  	
643  	/* keyword class */
644  	#define G__CLASS
645  	
646  	/* member access control */
647  	#define G__ACCESS
648  	
649  	#ifdef G__NEWINHERIT
650  	#define G__PUBLIC       0x01
651  	#define G__PROTECTED    0x02
652  	#define G__PRIVATE      0x04
653  	#define G__GRANDPRIVATE 0x08
654  	#define G__PUBLIC_PROTECTED_PRIVATE 0x7
655  	#define G__PUBLIC_PROTECTED         0x3
656  	
657  	#else
658  	#define G__PUBLIC    0
659  	#define G__PROTECTED 1
660  	#define G__PRIVATE   2
661  	#define G__GRANDPRIVATE 3
662  	#endif
663  	
664  	/* inheritance */
665  	#define G__INHERIT
666  	#define G__INHERIT1
667  	#define G__INHERIT2
668  	#define G__INHERIT3
669  	#define G__INHERIT4
670  	#define G__INHERIT5
671  	
672  	#define G__EXPLICITCONV
673  	
674  	#ifdef __CINT__
675  	typedef int (*G__IgnoreInclude)();
676  	#endif
677  	
678  	/**********************************************************************
679  	* Non object oriented feature of C++
680  	**********************************************************************/
681  	
682  	/***************************************************************
683  	* Implementation of function/operator overloading is not
684  	* completed. It is very premature.
685  	***************************************************************/
686  	
687  	/* if G__OVERLOADOPERATOR is defined, G__OVERLOADFUNC must be also defined */
688  	#define G__OVERLOADOPERATOR
689  	#define G__OVERLOADOPERATOR2
690  	
691  	/* if G__OVERLOADFUNC is defined, G__IFUNCPARA must be also defined */
692  	#define G__OVERLOADFUNC
693  	
694  	#define G__OVERLOADFUNC2
695  	#define G__EXACT     1
696  	#define G__PROMOTION 2
697  	#define G__STDCONV   3
698  	#define G__USERCONV  4
699  	
700  	/* for struct,class,union return value */
701  	#define G__TEMPOBJECT
702  	#define G__TEMPOBJECT2
703  	
704  	/* reference type */
705  	#define G__REFERENCETYPE
706  	
707  	/* improved version of reference type implementation */
708  	#define G__REFERENCETYPE2
709  	
710  	/***************************************************************
711  	* Having default parameter for function
712  	***************************************************************/
713  	
714  	/* G__DEFAULTPARAMETER can be defined independently */
715  	#define G__DEFAULTPARAMETER
716  	
717  	
718  	/***************************************************************
719  	* reading and storing parameter type for ANSI stype function
720  	* header. This functionality itself can be added to non C++
721  	* version but it won't play essential part.  For C++ version,
722  	* function parameter information is needed for function/operator
723  	* overloading.
724  	***************************************************************/
725  	
726  	/* G__IFUNCPARA can be defined independently */
727  	#define G__IFUNCPARA
728  	
729  	/* C++ object linkage */
730  	#define G__CPPSTUB     5
731  	#define G__CPPLINK    -1
732  	#define G__CPPLINK1
733  	#define G__CPPLINK2
734  	#define G__CPPLINK3
735  	
736  	/* C object linkage same way as C++ */
737  	#define G__CSTUB       6
738  	#define G__CLINK      -2
739  	
740  	/* define for Reflex cpp source code */
741  	#define R__CPPLINK  -3
742  	
743  	/* Link macro as function */
744  	#define G__MACROLINK  (-5)
745  	
746  	/* Link macro as function */
747  	#define G__METHODLINK  (-6)
748  	#define G__ONLYMETHODLINK  6
749  	
750  	#define G__NOLINK      0
751  	
752  	
753  	
754  	#else /* of G__CPLUSPLUS */
755  	
756  	/***************************************************************
757  	* new comment style   //
758  	***************************************************************/
759  	#define G__NOCPPCOMMENT
760  	
761  	#endif /* of G__CPLUSPLUS */
762  	
763  	/**************************************************************************
764  	* Table and variable size
765  	*
766  	* CAUTION:
767  	*  Among constants below, changing following parameter cause DLL binary
768  	* incompatibility.
769  	*
770  	*    G__MAXFUNCPARA
771  	*
772  	* Other parameters can be changed while keeping DLL binary compatibility.
773  	*
774  	**************************************************************************/
775  	
776  	#define G__LONGBUF 1
777  	
778  	#ifdef G__LONGLINE
779  	#define G__ONELINE     1024  /* Length of subexpression,parameter,argument */
780  	#define G__ONELINEDICT    8  /* Length of subexpression,parameter,argument */
781  	#define G__MAXNAME     G__LONGLINE  /* Variable name */
782  	#else
783  	#ifdef G__LONGBUF
784  	#define G__LONGLINE    4096  /* Length of expression */
785  	#define G__ONELINE     4096  /* Length of subexpression,parameter,argument */
786  	#define G__ONELINEDICT    8  /* Length of subexpression,parameter,argument */
787  	#define G__MAXNAME     4096  /* Variable name */
788  	#else
789  	#define G__LONGLINE    2048  /* Length of expression */
790  	#define G__ONELINE     1024  /* Length of subexpression,parameter,argument */
791  	#define G__MAXNAME      512  /* Variable name */
792  	#define G__ONELINEDICT    8  /* Length of subexpression,parameter,argument */
793  	#endif
794  	#endif
795  	
796  	#define G__LARGEBUF    6000  /* big temp buffer */
797  	#define G__MAXFILE     2000  /* Max interpreted source file */
798  	#define G__MAXFILENAME 1024  /* Max interpreted source file name length */
799  	#define G__MAXPARA      100  /* Number of argument for G__main(argc,argv)   */
800  	#define G__MAXARG       100  /* Number of argument for G__init_cint(char *) */
801  	#define G__MAXFUNCPARA   40  /* Function argument */
802  	#define G__MAXVARDIM     10  /* Array dimension */
803  	#define G__LENPOST       10  /* length of file name extention */
804  	#define G__MAXBASE       50  /* maximum inheritable class */
805  	#define G__TAGNEST       20  /* depth of nested class */
806  	
807  	#ifndef G__MAXSTRUCT
808  	#ifdef G__WIN32
809  	#if defined(_MSC_VER) && (_MSC_VER>1300)
810  	#define G__MAXSTRUCT  24000  /* struct table */
811  	#else
812  	#define G__MAXSTRUCT   4000  /* struct table */
813  	#endif
814  	#else
815  	#define G__MAXSTRUCT  24000  /* struct table */
816  	#endif
817  	#endif
818  	
819  	#ifndef G__MAXTYPEDEF
820  	#ifdef G__WIN32
821  	#if defined(_MSC_VER) && (_MSC_VER>1300)
822  	#define G__MAXTYPEDEF 24000  /* typedef table */
823  	#else
824  	#define G__MAXTYPEDEF  8000  /* typedef table */
825  	#endif
826  	#else
827  	#define G__MAXTYPEDEF 24000  /* typedef table */
828  	#endif
829  	#endif
830  	
831  	/* G__MAXIFUNC and G__MEMDEPTH are not real limit
832  	 * They are depth of one page of function or variable list
833  	 * If the page gets full, more table is allocated. */
834  	#define G__MAXIFUNC 1
835  	#define G__MEMDEPTH 1
836  	
837  	
838  	/* #define G__HIST     1 */
839  	
840  	/**************************************************************************
841  	* error handling
842  	**************************************************************************/
843  	#define G__TIMEOUT 10   /* Timeout after segv,buserror,etc */
844  	
845  	/**************************************************************************
846  	* variable identity
847  	**************************************************************************/
848  	#define G__AUTO (-1)
849  	#define G__LOCALSTATIC (-2)
850  	#define G__LOCALSTATICBODY (-3)
851  	#define G__COMPILEDGLOBAL  (-4)
852  	#define G__AUTOARYDISCRETEOBJ (-5)
853  	#define G__USING_VARIABLE (-6)
854  	#define G__USING_STATIC_VARIABLE (-7)
855  	
856  	#define G__LOCAL    0
857  	#ifdef G__MEMBERFUNC
858  	#define G__MEMBER   2
859  	#define G__GLOBAL   4
860  	#define G__NOTHING  6
861  	#else
862  	#define G__GLOBAL   2
863  	#endif
864  	
865  	/**************************************************************************
866  	* flag argument to G__getfunction()
867  	**************************************************************************/
868  	#define G__TRYNORMAL         0
869  	#define G__CALLMEMFUNC       1
870  	#define G__TRYMEMFUNC        2
871  	#define G__CALLCONSTRUCTOR   3
872  	#define G__TRYCONSTRUCTOR    4
873  	#define G__TRYDESTRUCTOR     5
874  	#define G__CALLSTATICMEMFUNC 6
875  	#define G__TRYUNARYOPR       7
876  	#define G__TRYBINARYOPR      8
877  	
878  	#ifndef G__OLDIMPLEMENTATINO1250
879  	#define G__TRYIMPLICITCONSTRUCTOR 7
880  	#endif
881  	
882  	/**************************************************************************
883  	* Scope operator category
884  	**************************************************************************/
885  	#define G__NOSCOPEOPR    0
886  	#define G__GLOBALSCOPE   1
887  	#define G__CLASSSCOPE    2
888  	
889  	/*********************************************************************
890  	* variable length string buffer
891  	*********************************************************************/
892  	#define G__LONGLONG    1
893  	#define G__ULONGLONG   2
894  	#define G__LONGDOUBLE  3
895  	
896  	/**************************************************************************
897  	* store environment for stub function casll
898  	*
899  	**************************************************************************/
900  	struct G__StoreEnv {
901  	  long store_struct_offset;
902  	  int store_tagnum;
903  	  int store_memberfunc_tagnum;
904  	  int store_exec_memberfunc;
905  	};
906  	
907  	
908  	/**************************************************************************
909  	* struct of pointer to pointer flag
910  	*
911  	* By histrorical reason, cint handles pointer to pointer in following manner.
912  	*
913  	* islower(buf.type)&&G__PARANORMAL==buf.obj.reftype.reftype :object
914  	* isupper(buf.type)&&G__PARANORMAL==buf.obj.reftype.reftype :pointer to object
915  	* isupper(buf.type)&&G__PARAP2P==buf.obj.reftype.reftype    :pointer to pointer
916  	* isupper(buf.type)&&G__PARAP2PP2==buf.obj.reftype.reftype  :pointer to pointer
917  	*                                                            to pointer
918  	**************************************************************************/
919  	struct G__p2p {
920  	  long i;
921  	  int reftype;
922  	};
923  	
924  	/**************************************************************************
925  	* struct of internal data
926  	*
927  	**************************************************************************/
928  	struct G__DUMMY_FOR_CINT7 {
929  	   void* fTypeName;
930  	   unsigned int fModifiers;
931  	};
932  	
933  	#ifdef __cplusplus
934  	struct G__value {
935  	#else
936  	typedef struct {
937  	#endif
938  	  union {
939  	    double d;
940  	    long    i; /* used to be int */
941  	#if defined(G__PRIVATE_GVALUE) && !defined(_WIN32)
942  	#if defined(private) && defined(ROOT_RVersion)
943  	#define G__alt_private private
944  	#undef private
945  	#endif
946  	private:
947  	#endif
948  	    struct G__p2p reftype;
949  	#if defined(G__PRIVATE_GVALUE) && !defined(_WIN32)
950  	public:
951  	#endif
952  	    char ch;
953  	    short sh;
954  	    int in;
955  	    float fl;
956  	    unsigned char uch;
957  	    unsigned short ush;
958  	    unsigned int uin;
959  	    unsigned long ulo;
960  	    G__int64 ll;
961  	    G__uint64 ull;
962  	    long double ld;
963  	  } obj;
964  	#ifdef G__REFERENCETYPE2
965  	  long ref;
966  	#endif
967  	#if defined(G__PRIVATE_GVALUE) && !defined(_WIN32)
968  	   /*private:*/
969  	#if defined(G__alt_private) && defined(ROOT_RVersion)
970  	#define private public
971  	#endif
972  	#endif
973  	  int type;
974  	  int tagnum;
975  	  int typenum;
976  	#ifndef G__OLDIMPLEMENTATION1259
977  	  G__SIGNEDCHAR_T isconst;
978  	#endif
979  	  struct G__DUMMY_FOR_CINT7 dummyForCint7;
980  	#ifdef __cplusplus
981  	}
982  	#else
983  	} G__value
984  	#endif
985  	;
986  	
987  	/**************************************************************************
988  	* reference type argument for precompiled function
989  	**************************************************************************/
990  	#define G__Mfloat(buf)   (buf.obj.fl=(float)G__double(buf))
991  	#define G__Mdouble(buf)  buf.obj.d
992  	#define G__Mchar(buf)    (buf.obj.ch=(char)buf.obj.i)
993  	#define G__Mshort(buf)   (buf.obj.sh=(short)buf.obj.i)
994  	#define G__Mint(buf)     (buf.obj.in=(int)buf.obj.i)
995  	#define G__Mlong(buf)    buf.obj.i
996  	#define G__Muchar(buf)   (buf.obj.uch=(unsigned char)buf.obj.i)
997  	#define G__Mushort(buf)  (buf.obj.ush=(unsigned short)buf.obj.i)
998  	#define G__Muint(buf)    (*(unsigned int*)(&buf.obj.i))
999  	#define G__Mulong(buf)   (*(unsigned long*)(&buf.obj.i))
1000 	
1001 	
1002 	
1003 	/**************************************************************************
1004 	* include file flags
1005 	**************************************************************************/
1006 	#define G__USERHEADER 1
1007 	#define G__SYSHEADER  2
1008 	
1009 	
1010 	#ifndef G__ANSI
1011 	#if (__GNUC__>=3) || defined(_STLPORT_VERSION)
1012 	#define G__ANSI
1013 	#endif
1014 	#endif
1015 	/* #define G__ANSI */
1016 	
1017 	#ifdef __cplusplus
1018 	
1019 	#ifndef G__ANSI
1020 	#define G__ANSI
1021 	#endif
1022 	#ifndef __CINT__
1023 	#define G__CONST const
1024 	#else
1025 	#define G__CONST
1026 	#endif
1027 	
1028 	#else /* __cplusplus */
1029 	
1030 	#define G__CONST
1031 	
1032 	#endif /* __cplusplus */
1033 	
1034 	extern G__value G__null;
1035 	
1036 	/**************************************************************************
1037 	* struct for variable page buffer
1038 	*
1039 	**************************************************************************/
1040 	#ifndef __CINT__
1041 	#define G__VARSIZE  2
1042 	#define G__CHARALLOC   sizeof(char)
1043 	#define G__SHORTALLOC  sizeof(short)
1044 	#define G__INTALLOC    sizeof(int)
1045 	#define G__LONGALLOC   sizeof(long)
1046 	#define G__FLOATALLOC  sizeof(float)
1047 	#define G__DOUBLEALLOC sizeof(double)
1048 	#define G__P2MFALLOC   G__sizep2memfunc
1049 	#define G__LONGLONGALLOC sizeof(G__int64)
1050 	#define G__LONGDOUBLEALLOC sizeof(long double)
1051 	#endif /* __CINT__ */
1052 	
1053 	#ifdef G__TESTMAIN
1054 	/* This is only needed for demonstration that cint interprets cint */
1055 	#define G__VARSIZE  2
1056 	#define G__CHARALLOC   sizeof(char)
1057 	#define G__SHORTALLOC  sizeof(short)
1058 	#define G__INTALLOC    sizeof(int)
1059 	#define G__LONGALLOC   sizeof(long)
1060 	#define G__FLOATALLOC  sizeof(float)
1061 	#define G__DOUBLEALLOC sizeof(double)
1062 	#define G__P2MFALLOC   G__sizep2memfunc
1063 	#endif
1064 	
1065 	/**************************************************************************
1066 	* CINT API function return value
1067 	*
1068 	**************************************************************************/
1069 	/* return value of G__init_cint() */
1070 	#define G__INIT_CINT_FAILURE         (-1)
1071 	#define G__INIT_CINT_SUCCESS          0
1072 	#define G__INIT_CINT_SUCCESS_MAIN     1
1073 	
1074 	/* return value of G__loadfile() */
1075 	#define G__LOADFILE_SUCCESS         0
1076 	#define G__LOADFILE_DUPLICATE       1
1077 	#define G__LOADFILE_FAILURE       (-1)
1078 	#define G__LOADFILE_FATAL         (-2)
1079 	
1080 	/* return value of G__unloadfile() */
1081 	#define G__UNLOADFILE_SUCCESS    0
1082 	#define G__UNLOADFILE_FAILURE  (-1)
1083 	
1084 	/* return value of G__pause() */
1085 	#define G__PAUSE_NORMAL          0
1086 	#define G__PAUSE_IGNORE          1
1087 	#define G__PAUSE_STEPOVER        3
1088 	#define G__PAUSE_ERROR_OFFSET 0x10
1089 	
1090 	/* return value of G__interpretedp2f() */
1091 	#define G__NOSUCHFUNC              0
1092 	#define G__UNKNOWNFUNC             0
1093 	#define G__INTERPRETEDFUNC         1
1094 	#define G__COMPILEDWRAPPERFUNC     2
1095 	#define G__COMPILEDINTERFACEMETHOD 2
1096 	#define G__COMPILEDTRUEFUNC        3
1097 	#define G__BYTECODEFUNC            4
1098 	
1099 	/* flags to set to G__ismain */
1100 	#define G__NOMAIN                  0
1101 	#define G__MAINEXIST               1
1102 	#define G__TCLMAIN                 2
1103 	
1104 	/**************************************************************************
1105 	* struct forward declaration; real ones are in common.h
1106 	**************************************************************************/
1107 	struct G__ifunc_table;
1108 	struct G__var_array;
1109 	struct G__dictposition;
1110 	struct G__comment_info;
1111 	struct G__friendtag;
1112 	#ifdef G__ASM_WHOLEFUNC
1113 	struct G__bytecodefunc;
1114 	#endif
1115 	struct G__funcentry;
1116 	struct G__ifunc_table;
1117 	struct G__inheritance;
1118 	struct G__var_array;
1119 	struct G__tagtable;
1120 	struct G__input_file;
1121 	#ifdef G__CLINK
1122 	struct G__tempobject_list;
1123 	#endif
1124 	struct G__va_list_para;
1125 	
1126 	/*********************************************************************
1127 	* return status flag
1128 	*********************************************************************/
1129 	#define G__RETURN_NON       0
1130 	#define G__RETURN_NORMAL    1
1131 	#define G__RETURN_IMMEDIATE 2
1132 	#define G__RETURN_TRY      -1
1133 	#define G__RETURN_EXIT1     4
1134 	#define G__RETURN_EXIT2     5
1135 	
1136 	/**************************************************************************
1137 	* struct declaration to avoid error (compiler dependent)
1138 	**************************************************************************/
1139 	struct G__ifunc_table;
1140 	struct G__var_array;
1141 	struct G__dictposition; /* decl in Api.h because of Cint7's having C++ content */
1142 	
1143 	/**************************************************************************
1144 	* comment information
1145 	*
1146 	**************************************************************************/
1147 	struct G__comment_info {
1148 	   union {
1149 	      char  *com;
1150 	      fpos_t pos;
1151 	   } p;
1152 	   int   filenum;
1153 	#ifdef __cplusplus
1154 	   G__comment_info() : filenum(0) { p.com = 0; };
1155 	#endif
1156 	};
1157 	
1158 	/**************************************************************************
1159 	* ROOT special requirement
1160 	*
1161 	**************************************************************************/
1162 	#define G__NOSTREAMER      0x01
1163 	#define G__NOINPUTOPERATOR 0x02
1164 	#define G__USEBYTECOUNT    0x04
1165 	#define G__HASVERSION      0x08
1166 	
1167 	struct G__RootSpecial {
1168 	  char* deffile;
1169 	  int defline;
1170 	  char* impfile;
1171 	  int impline;
1172 	  int version;
1173 	  unsigned int instancecount;
1174 	  unsigned int heapinstancecount;
1175 	  void* defaultconstructor; /* defaultconstructor wrapper/stub pointer */
1176 	  struct G__ifunc_table* defaultconstructorifunc; /* defaultconstructor ifunc entry */
1177 	};
1178 	
1179 	/**************************************************************************
1180 	* structure for friend function and class
1181 	*
1182 	**************************************************************************/
1183 	struct G__friendtag {
1184 	  short tagnum;
1185 	  struct G__friendtag *next;
1186 	};
1187 	
1188 	/**************************************************************************
1189 	* structure for function entry
1190 	*
1191 	**************************************************************************/
1192 	#define G__BYTECODE_NOTYET    1
1193 	#define G__BYTECODE_FAILURE   2
1194 	#define G__BYTECODE_SUCCESS   3
1195 	#define G__BYTECODE_ANALYSIS  4 /* ON1164 */
1196 	
1197 	
1198 	/**************************************************************************
1199 	* structure for function and array parameter
1200 	*
1201 	**************************************************************************/
1202 	struct G__param {
1203 	  int paran;
1204 	  G__value para[G__MAXFUNCPARA];
1205 	  char parameter[G__MAXFUNCPARA][G__ONELINE];
1206 	};
1207 	
1208 	
1209 	#if defined(__cplusplus) && !defined(__CINT__)
1210 	}   /* extern C 1 */
1211 	#endif
1212 	
1213 	/**************************************************************************
1214 	* Interface Method type
1215 	*
1216 	**************************************************************************/
1217 	#if defined(__cplusplus) && defined(G__CPPIF_EXTERNC) && !defined(__CINT__)
1218 	extern "C" {   /* extern C 2 */
1219 	#endif
1220 	
1221 	#if defined(G__ANSIHEADER) || defined(G__ANSI)
1222 	typedef int (*G__InterfaceMethod)(G__value*,G__CONST char*,struct G__param*,int);
1223 	#else
1224 	typedef int (*G__InterfaceMethod)();
1225 	#endif
1226 	
1227 	#ifdef __cplusplus
1228 	typedef void (*G__incsetup)(void);
1229 	#else  /* __cplusplus */
1230 	typedef void (*G__incsetup)();
1231 	#endif /* __cplusplus */
1232 	
1233 	#if defined(__cplusplus) && defined(G__CPPIF_EXTERNC) && !defined(__CINT__)
1234 	} /* extern C 2 */
1235 	#endif
1236 	
1237 	#if defined(__cplusplus) && !defined(__CINT__)
1238 	extern "C" { /* extern C 3 */
1239 	#endif
1240 	
1241 	/**************************************************************************
1242 	* structure for class inheritance
1243 	*
1244 	**************************************************************************/
1245 	#define G__ISDIRECTINHERIT         0x0001
1246 	#define G__ISVIRTUALBASE           0x0002
1247 	#define G__ISINDIRECTVIRTUALBASE   0x0004
1248 	
1249 	
1250 	/**************************************************************************
1251 	* structure for input file
1252 	*
1253 	**************************************************************************/
1254 	struct G__input_file {
1255 	   FILE *fp;
1256 	   int line_number;
1257 	   short filenum;
1258 	   char name[G__MAXFILENAME];
1259 	#ifndef G__OLDIMPLEMENTATION1649
1260 	   char *str;
1261 	   unsigned long pos;
1262 	   int vindex;
1263 	#endif
1264 	#ifdef __cplusplus
1265 	   G__input_file() : fp(0),line_number(-1),filenum(-1),str(0),pos(0),vindex(0) { name[0] = 0; }
1266 	#endif
1267 	};
1268 	
1269 	/**************************************************************************
1270 	* make hash value
1271 	*
1272 	**************************************************************************/
1273 	
1274 	#define G__hash(string,hash,len) len=hash=0;while(string[len]!='\0')hash+=string[len++];
1275 	
1276 	
1277 	/**************************************************************************
1278 	* Compiled class tagnum table
1279 	*
1280 	**************************************************************************/
1281 	typedef struct {
1282 	#ifdef __cplusplus
1283 	  const char *tagname;
1284 	#else
1285 	  char *tagname;
1286 	#endif
1287 	  char tagtype;
1288 	  short tagnum;
1289 	} G__linked_taginfo;
1290 	
1291 	/**************************************************************************
1292 	* Completion list and function pointer list
1293 	*
1294 	**************************************************************************/
1295 	typedef struct {
1296 	  char *name;
1297 	  void (*pfunc)();
1298 	} G__COMPLETIONLIST;
1299 	
1300 	#define G__TEMPLATEMEMFUNC
1301 	#ifdef G__TEMPLATEMEMFUNC
1302 	/* Doubly linked list of long int, methods are described in tmplt.c */
1303 	struct G__IntList {
1304 	  long i;
1305 	  struct G__IntList *prev;
1306 	  struct G__IntList *next;
1307 	};
1308 	
1309 	struct G__Definedtemplatememfunc {
1310 	  int line;
1311 	  int filenum;
1312 	  FILE *def_fp;
1313 	  fpos_t def_pos;
1314 	  struct G__Definedtemplatememfunc *next;
1315 	};
1316 	#endif
1317 	
1318 	struct G__Templatearg {
1319 	  int type;
1320 	  char *string;
1321 	  char *default_parameter;
1322 	  struct G__Templatearg *next;
1323 	};
1324 	
1325 	struct G__Definedtemplateclass {
1326 	  char *name;
1327 	  int hash;
1328 	  int line;
1329 	  int filenum;
1330 	  FILE *def_fp;
1331 	  fpos_t def_pos;
1332 	  struct G__Templatearg *def_para;
1333 	#ifdef G__TEMPLATEMEMFUNC
1334 	  struct G__Definedtemplatememfunc memfunctmplt;
1335 	#endif
1336 	  struct G__Definedtemplateclass *next;
1337 	  int parent_tagnum;
1338 	  struct G__IntList *instantiatedtagnum;
1339 	  int isforwarddecl;
1340 	  int friendtagnum;
1341 	  struct G__Definedtemplateclass *specialization;
1342 	  struct G__Templatearg *spec_arg;
1343 	};
1344 	
1345 	/********************************************************************
1346 	* include path by -I option
1347 	* Used in G__main() and G__loadfile()
1348 	********************************************************************/
1349 	struct G__includepath {
1350 	  char *pathname;
1351 	  struct G__includepath *next;
1352 	};
1353 	
1354 	
1355 	/**************************************************************************
1356 	* pointer to function which is evaluated at pause
1357 	**************************************************************************/
1358 	extern void (*G__atpause)();
1359 	
1360 	/**************************************************************************
1361 	* pointer to function which is evaluated in G__genericerror()
1362 	**************************************************************************/
1363 	extern void (*G__aterror)();
1364 	
1365 	/**************************************************************************
1366 	* New handling of pointer to function
1367 	*
1368 	**************************************************************************/
1369 	#ifndef G__NONANSI
1370 	#ifndef G__SUNOS4
1371 	#define G__FUNCPOINTER
1372 	#endif
1373 	#endif
1374 	
1375 	/**************************************************************************
1376 	* Bug fix for struct allocation
1377 	*
1378 	**************************************************************************/
1379 	#define G__PVOID ((long)(-1))
1380 	#define G__PINVALID 0
1381 	
1382 	/**********************************************************************
1383 	* Multi-byte character handling in comment and string
1384 	**********************************************************************/
1385 	#define G__MULTIBYTE
1386 	
1387 	/**************************************************************************
1388 	* ASSERTION MACRO
1389 	*
1390 	**************************************************************************/
1391 	#if defined(G__DEBUG) || defined(G__ASM_DBG)
1392 	
1393 	#define G__ASSERT(f)                                                      \
1394 	  if(!(f)) fprintf(G__serr                                                \
1395 	                   ,"cint internal error: %s line %u FILE:%s LINE:%d\n"   \
1396 	                   ,__FILE__,__LINE__,G__ifile.name,G__ifile.line_number)
1397 	
1398 	
1399 	#else
1400 	
1401 	#define G__ASSERT(f)  /* NULL */
1402 	
1403 	#endif
1404 	
1405 	
1406 	#ifndef __CINT__
1407 	/**************************************************************************
1408 	* Exported Functions
1409 	*
1410 	**************************************************************************/
1411 	#ifdef G__ANSI
1412 	#define G__P(funcparam) funcparam
1413 	#else
1414 	#define G__P(funcparam) ()
1415 	#endif
1416 	
1417 	#if defined(G__DEBUG) && !defined(G__MEMTEST_C)
1418 	#include "src/memtest.h"
1419 	#endif
1420 	
1421 	#ifndef G__WILDCARD
1422 	#define G__WILDCARD
1423 	#endif
1424 	
1425 	/**************************************************************************
1426 	 * Variable argument, byte layout policy
1427 	 **************************************************************************/
1428 	#define G__VAARG_SIZE 1024
1429 	
1430 	typedef struct {
1431 	  union {
1432 	    char d[G__VAARG_SIZE];
1433 	    long i[G__VAARG_SIZE/sizeof(long)];
1434 	  } x;
1435 	} G__va_arg_buf;
1436 	
1437 	
1438 	/* cross-compiling for iOS and iOS simulator (assumes host is Intel Mac OS X) */
1439 	#if defined(R__IOSSIM) || defined(R__IOS)
1440 	#ifdef __x86_64__
1441 	#define R__x86_64 1
1442 	#undef __x86_64__
1443 	#endif
1444 	#ifdef __i386__
1445 	#define R__i386 1
1446 	#undef __i386__
1447 	#endif
1448 	#ifdef R__IOSSIM
1449 	#define __i386__ 1
1450 	#endif
1451 	#ifdef R__IOS
1452 	#define __arm__ 1
1453 	#endif
1454 	#endif
1455 	
1456 	
1457 	#if (defined(__i386__) && (defined(__linux) || defined(__APPLE__))) || \
1458 	    defined(_WIN32) || defined(G__CYGWIN)
1459 	/**********************************************
1460 	 * Intel architecture, aligns in multiple of 4
1461 	 *    |1111|22  |3   |44444444|55555555555555  |
1462 	 **********************************************/
1463 	#define G__VAARG_INC_COPY_N 4
1464 	
1465 	#elif (defined(__linux)&&defined(__ia64__))
1466 	/**********************************************
1467 	 * Itanium/linux, aligns in multiple of 8
1468 	 **********************************************/
1469 	
1470 	#define G__VAARG_INC_COPY_N 8
1471 	#define G__VAARG_PASS_BY_REFERENCE 8
1472 	
1473 	#elif defined(__hpux) || defined(__hppa__)
1474 	/**********************************************
1475 	 * HP-Precision Architecture,
1476 	 *  Args > 8 bytes are passed by reference.  Args > 4 and <= 8 are
1477 	 *  right-justified in 8 bytes.  Args <= 4 are right-justified in
1478 	 *  4 bytes.
1479 	 **********************************************/
1480 	/* #define G__VAARG_NOSUPPORT */
1481 	
1482 	#ifdef __ia64__
1483 	#define G__VAARG_INC_COPY_N 8
1484 	#else
1485 	#define G__VAARG_INC_COPY_N 4
1486 	#endif
1487 	#define G__VAARG_PASS_BY_REFERENCE 8
1488 	
1489 	#elif defined(__x86_64__) && (defined(__linux) || defined(__APPLE__) || \
1490 	      defined(__FreeBSD__) && defined(__sun))
1491 	/**********************************************
1492 	 * AMD64/EM64T
1493 	 * It turned out it is quite difficult to support this
1494 	 * platform as it uses registers for passing arguments (first 6 long
1495 	 * and first 8 double arguments in registers, the remaining on the stack)
1496 	 * for Linux/gcc.
1497 	 **********************************************/
1498 	
1499 	#define G__VAARG_INC_COPY_N 8
1500 	/* #define G__VAARG_PASS_BY_REFERENCE 8 */
1501 	
1502 	#elif defined(__sparc) || defined(__sparc__) || defined(__SUNPRO_C) || \
1503 	      defined(__SUNPRO_CC)
1504 	/**********************************************
1505 	 * Sun Sparc architecture
1506 	 * Alignment is similar to Intel, but class/struct
1507 	 * objects are passed by reference
1508 	 **********************************************/
1509 	/* #define G__VAARG_NOSUPPORT */
1510 	
1511 	#define G__VAARG_INC_COPY_N 4
1512 	#define G__VAARG_PASS_BY_REFERENCE 8
1513 	
1514 	#elif (defined(__PPC__)||defined(__ppc__))&&(defined(_AIX)||defined(__APPLE__))
1515 	/**********************************************
1516 	 * PowerPC, AIX and Apple Mac
1517 	 * It turned out it is quite difficult if not impossible to support PowerPC.
1518 	 * PPC uses registers for passing arguments (general purpose 3-10, floating 1)
1519 	 **********************************************/
1520 	#if !defined(__GNUC__)
1521 	/* Looks like gcc3.3 doesn't use registers. */
1522 	/*#define G__VAARG_NOSUPPORT*/
1523 	#define G__VAARG_INC_COPY_N 4
1524 	#define G__VAARG_PASS_BY_REFERENCE 8
1525 	#endif
1526 	#define G__VAARG_INC_COPY_N 4
1527 	#define G__VAARG_PASS_BY_REFERENCE 8
1528 	
1529 	#elif (defined(__PPC__)||defined(__ppc__))&&(defined(__linux)||defined(__linux__))
1530 	/**********************************************
1531 	 * PowerPC, Linux
1532 	 **********************************************/
1533 	#define G__VAARG_INC_COPY_N 4
1534 	#define G__VAARG_PASS_BY_REFERENCE 8
1535 	
1536 	#elif (defined(__mips__)&&defined(__linux__))
1537 	/**********************************************
1538 	* MIPS, Linux
1539 	* 3 different calling conventions:
1540 	*                             | mips   | mipsn32   | mips64
1541 	*                             | mipsel | mipsn32el | mips64el
1542 	*  ---------------------------+--------+---------------------
1543 	*  G__VAARG_INC_COPY_N        |   4    |     8     |    8
1544 	*  G__VAARG_PASS_BY_REFERENCE |   4    |     8     |    8
1545 	*
1546 	* Assuming that
1547 	*    G__VAARG_INC_COPY_N
1548 	*       is meant to be the size of the argument registers,
1549 	*    G__VAARG_PASS_BY_REFERENCE
1550 	*       is the number of arguments passed by reference through
1551 	*       registers.
1552 	*
1553 	* Thanks to Thiemo Seufer <ths@networkno.de> of Debian
1554 	**********************************************/
1555 	# if _MIPS_SIM == _ABIO32 /* mips or mipsel */
1556 	#  define G__VAARG_INC_COPY_N 4
1557 	#  define G__VAARG_PASS_BY_REFERENCE 4
1558 	# elif _MIPS_SIM == _ABIN32 /* mipsn32 or mipsn32el */
1559 	#  define G__VAARG_INC_COPY_N 8
1560 	#  define G__VAARG_PASS_BY_REFERENCE 8
1561 	# elif _MIPS_SIM == _ABI64 /* mips64 or mips64el */
1562 	#  define G__VAARG_INC_COPY_N 8
1563 	#  define G__VAARG_PASS_BY_REFERENCE 8
1564 	# else
1565 	#  define G__VAARG_NOSUPPORT
1566 	# endif
1567 	#else
1568 	/**********************************************
1569 	 * Other platforms,
1570 	 *  Try copying object as value.
1571 	 **********************************************/
1572 	#define G__VAARG_NOSUPPORT
1573 	#define G__VAARG_INC_COPY_N 4
1574 	/* #define G__VAARG_PASS_BY_REFERENCE 8 */
1575 	
1576 	#endif
1577 	
1578 	/* cross-compiling for iOS and iOS simulator (assumes host is Intel Mac OS X) */
1579 	#if defined(R__IOSSIM) || defined(R__IOS)
1580 	#undef __i386__
1581 	#undef __arm__
1582 	#ifdef R__x86_64
1583 	#define __x86_64__ 1
1584 	#endif
1585 	#ifdef R__i386
1586 	#define __i386__ 1
1587 	#endif
1588 	#endif
1589 	
1590 	struct G__va_list_para {
1591 	  struct G__param *libp;
1592 	  int i;
1593 	};
1594 	
1595 	extern G__EXPORT G__value (*G__GetSpecialObject) (G__CONST char *name,void **ptr,void** ppdict);
1596 	extern G__EXPORT int (*G__ScriptCompiler)(G__CONST char*,G__CONST char*);
1597 	
1598 	typedef int (*G__IgnoreInclude) G__P((const char* fname,const char* expandedfname));
1599 	typedef void G__parse_hook_t ();
1600 	
1601 	/**********************************************
1602 	 * Exported Functions
1603 	 *
1604 	 **********************************************/
1605 	
1606 	#ifndef G__DECL_API
1607 	# ifndef G__MULTITHREADLIBCINT
1608 	#  ifdef __cplusplus
1609 	#    define G__DUMMYTOCHECKFORDUPLICATES_CONCAT(A,B) A##B
1610 	#    define G__DUMMYTOCHECKFORDUPLICATES(IDX) namespace{class G__DUMMYTOCHECKFORDUPLICATES_CONCAT(this_API_function_index_occurs_more_than_once_,IDX) {};}
1611 	#  else
1612 	#    define G__DUMMYTOCHECKFORDUPLICATES(IDX)
1613 	#  endif
1614 	#  define G__DECL_API(IDX, RET, NAME, ARGS) \
1615 	   G__EXPORT RET NAME ARGS ; G__DUMMYTOCHECKFORDUPLICATES(IDX)
1616 	# else
1617 	#  define G__DUMMYTOCHECKFORDUPLICATES(IDX)
1618 	#  define G__DECL_API(IDX, RET, NAME, ARGS) \
1619 	     static RET (* NAME ) ARGS = 0;
1620 	# endif
1621 	#endif /*G__DECL_API*/
1622 	
1623 	#include "G__ci_fproto.h"
1624 	
1625 	#ifdef G__MULTITHREADLIBCINT
1626 	/* second round, now setting func ptrs */
1627 	
1628 	# undef  G__DUMMYTOCHECKFORDUPLICATES
1629 	# define G__DUMMYTOCHECKFORDUPLICATES(IDX)
1630 	# ifdef G__MULTITHREADLIBCINTC
1631 	#  define G__SET_CINT_API_POINTERS_FUNCNAME G__SetCCintApiPointers
1632 	# else
1633 	#  define G__SET_CINT_API_POINTERS_FUNCNAME G__SetCppCintApiPointers
1634 	# endif
1635 	# undef G__DECL_API
1636 	# define G__DECL_API(IDX, RET, NAME, ARGS) \
1637 	     NAME = (RET (*) ARGS) a[IDX];
1638 	
1639 	G__EXPORT void G__SET_CINT_API_POINTERS_FUNCNAME (void *a[G__NUMBER_OF_API_FUNCTIONS]) {
1640 	#include "G__ci_fproto.h"
1641 	}
1642 	
1643 	#endif /* G__MULTITHREADLIBCINT */
1644 	/**************************************************************************
1645 	 * end of Exported Cint API functions
1646 	 **************************************************************************/
1647 	
1648 	#endif /* __CINT__ */
1649 	
1650 	#if defined(G__WIN32)
1651 	#ifndef snprintf
1652 	#define snprintf _snprintf
1653 	#endif
1654 	#endif
1655 	
1656 	#if defined(G__WIN32) && (!defined(G__SYMANTEC)) && defined(G__CINTBODY)
1657 	/* ON562 , this used to be test for G__SPECIALSTDIO */
1658 	/************************************************************************
1659 	* Dummy I/O function for all Win32 based application
1660 	************************************************************************/
1661 	#ifdef printf
1662 	#undef printf
1663 	#endif
1664 	#ifdef fprintf
1665 	#undef fprintf
1666 	#endif
1667 	#ifdef fputc
1668 	#undef fputc
1669 	#endif
1670 	#ifdef putc
1671 	#undef putc
1672 	#endif
1673 	#ifdef putchar
1674 	#undef putchar
1675 	#endif
1676 	#ifdef fputs
1677 	#undef fputs
1678 	#endif
1679 	#ifdef puts
1680 	#undef puts
1681 	#endif
1682 	#ifdef fgets
1683 	#undef fgets
1684 	#endif
1685 	#ifdef gets
1686 	#undef gets
1687 	#endif
1688 	#ifdef tmpfile
1689 	#undef tmpfile
1690 	#endif
1691 	#define printf  G__printf
1692 	#define fprintf G__fprintf
1693 	#define fputc   G__fputc
1694 	#define putc    G__fputc
1695 	#define putchar G__putchar
1696 	#define fputs   G__fputs
1697 	#define puts    G__puts
1698 	#define fgets   G__fgets
1699 	#define gets    G__gets
1700 	#define system  G__system
1701 	#define tmpfile G__tmpfile
1702 	
1703 	int G__fputc G__P((int character,FILE *fp));
1704 	int G__putchar G__P((int character));
1705 	int G__fputs G__P((char *string,FILE *fp));
1706 	int G__puts G__P((char *string));
1707 	char *G__fgets G__P((char *string,int n,FILE *fp));
1708 	char *G__gets G__P((char *buffer));
1709 	int G__system G__P((char *com));
1710 	FILE *G__tmpfile(void);
1711 	
1712 	#ifdef G__SPECIALSTDIO
1713 	
1714 	/* THIS IS AN OLD WILDC++ IMPLEMENTATION */
1715 	/* signal causes problem in Windows-95 with Tcl/Tk */
1716 	#define signal(sigid,p2f)  NULL
1717 	#define alarm(time)        NULL
1718 	
1719 	#else /* G__SPECIALSTDIO */
1720 	
1721 	#ifdef signal
1722 	#undef signal
1723 	#endif
1724 	#define signal G__signal
1725 	#define alarm(time)        NULL
1726 	typedef void (*G__signaltype)(int,void (*)(int));
1727 	G__signaltype G__signal G__P((int sgnl,void (*f)(int)));
1728 	
1729 	#endif /* G__SPECIALSTDIO */
1730 	
1731 	#endif /* WIN32 !SYMANTEC CINTBODY*/
1732 	/**************************************************************************
1733 	* end of specialstdio or win32
1734 	**************************************************************************/
1735 	
1736 	/***********************************************************************/
1737 	#if defined(__cplusplus) && !defined(__CINT__)
1738 	} /* extern C 3 */
1739 	#endif
1740 	
1741 	/***********************************************************************/
1742 	#if defined(__cplusplus) && !defined(__CINT__)
1743 	/* Helper class to avoid compiler warning about casting function pointer
1744 	** to void pointer.
1745 	*/
1746 	class G__func2void {
1747 	   typedef void (*funcptr_t)();
1748 	
1749 	   union funcptr_and_voidptr {
1750 	      typedef void (*funcptr_t)();
1751 	
1752 	      funcptr_and_voidptr(void *val) : _read(val) {}
1753 	
1754 	      void *_read;
1755 	      funcptr_t _write;
1756 	   };
1757 	
1758 	   funcptr_and_voidptr _tmp;
1759 	public:
1760 	   template <typename T>
1761 	   G__func2void( T vfp ) : _tmp(0) {
1762 	      _tmp._write = ( funcptr_t )vfp;
1763 	   }
1764 	
1765 	   operator void* () const {
1766 	      return _tmp._read;
1767 	   }
1768 	};
1769 	#elif !defined(__CINT__)
1770 	typedef union {
1771 	   void *_read;
1772 	   void (*_write)();
1773 	} funcptr_and_voidptr;
1774 	#endif /* __cplusplus  && ! __CINT__*/
1775 	
1776 	#endif /* __MAKECINT__ */
1777 	/**************************************************************************
1778 	* endif #ifndef G__MAKECINT
1779 	**************************************************************************/
1780 	
1781 	
1782 	
1783 	#endif /* G__CI_H */
1784