/* /% C %/ */ /*********************************************************************** * cint (C/C++ interpreter) ************************************************************************ * Source file common.h ************************************************************************ * Description: * Common header file for cint parser. ************************************************************************ * Copyright(c) 1995~2004 Masaharu Goto * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. The author makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. ************************************************************************/ #ifndef G__COMMON_H #define G__COMMON_H /************************************************************************** * Note, Warning message display flag **************************************************************************/ #define G__DISPNONE 0 #define G__DISPERR 1 #define G__DISPWARN 2 #define G__DISPNOTE 3 #define G__DISPALL 4 #define G__DISPSTRICT 5 #define G__DISPROOTSTRICT 5 /************************************************************************** * HSTD local facilities are turned on by defining G__HSTD. * Usually doesn't matter **************************************************************************/ #ifndef __CINT__ /* #define G__HSTD */ #endif /************************************************************************** * include header file which includes macros and structs. * **************************************************************************/ #include #define G__CINTBODY #include "G__ci.h" /************************************************************************** * GNU readline * * G__GNUREADLINE will be defined only if GNU readline library is compiled * successfully. **************************************************************************/ /* #define G__GNUREADLINE */ /************************************************************************** * Memory leakage test. Usually, commented out * **************************************************************************/ #ifdef G__DEBUG #include "memtest.h" #endif /************************************************************************** * On line file loading * **************************************************************************/ #define G__ONLINELOAD /************************************************************************** * standard include file <> **************************************************************************/ #define G__STDINCLUDE /************************************************************************** * make sutpi file **************************************************************************/ #define G__SUTPI #define G__SUT_PROTOTYPE 1 #define G__SUT_REALFUNC 2 /************************************************************************** * Array initialization **************************************************************************/ #define G__INITARY /************************************************************************** * Scope operator category **************************************************************************/ #define G__NOSCOPEOPR 0 #define G__GLOBALSCOPE 1 #define G__CLASSSCOPE 2 /************************************************************************** * Scope operator category **************************************************************************/ #define G__UNARYOP 'U' #define G__OPR_ADD '+' #define G__OPR_SUB '-' #define G__OPR_MUL '*' #define G__OPR_DIV '/' #define G__OPR_RSFT 'R' #define G__OPR_LSFT 'L' #define G__OPR_LT '<' #define G__OPR_GT '>' #define G__OPR_LE 'l' #define G__OPR_GE 'G' #define G__OPR_EQ 'E' #define G__OPR_NE 'N' #define G__OPR_AND 'A' #define G__OPR_OR 'O' #define G__OPR_INCREMENT 'I' #define G__OPR_DECREMENT 'D' #define G__OPR_ADDASSIGN 1 #define G__OPR_SUBASSIGN 2 #define G__OPR_MODASSIGN 3 #define G__OPR_MULASSIGN 4 #define G__OPR_DIVASSIGN 5 #define G__OPR_RSFTASSIGN 6 #define G__OPR_LSFTASSIGN 7 #define G__OPR_BANDASSIGN 8 #define G__OPR_BORASSIGN 9 #define G__OPR_EXORASSIGN 10 #define G__OPR_ANDASSIGN 11 #define G__OPR_ORASSIGN 12 #define G__OPR_POSTFIXINC 13 #define G__OPR_PREFIXINC 14 #define G__OPR_POSTFIXDEC 15 #define G__OPR_PREFIXDEC 16 #define G__OPR_ADDVOIDPTR 17 #define G__OPR_POSTFIXINC_I 0x110 #define G__OPR_PREFIXINC_I 0x111 #define G__OPR_POSTFIXDEC_I 0x112 #define G__OPR_PREFIXDEC_I 0x113 #define G__OPR_POSTFIXINC_S 0x410 #define G__OPR_PREFIXINC_S 0x411 #define G__OPR_POSTFIXDEC_S 0x412 #define G__OPR_PREFIXDEC_S 0x413 #define G__OPR_POSTFIXINC_L 0x510 #define G__OPR_PREFIXINC_L 0x511 #define G__OPR_POSTFIXDEC_L 0x512 #define G__OPR_PREFIXDEC_L 0x513 #define G__OPR_POSTFIXINC_H 0x610 #define G__OPR_PREFIXINC_H 0x611 #define G__OPR_POSTFIXDEC_H 0x612 #define G__OPR_PREFIXDEC_H 0x613 #define G__OPR_POSTFIXINC_R 0x710 #define G__OPR_PREFIXINC_R 0x711 #define G__OPR_POSTFIXDEC_R 0x712 #define G__OPR_PREFIXDEC_R 0x713 #define G__OPR_POSTFIXINC_K 0x810 #define G__OPR_PREFIXINC_K 0x811 #define G__OPR_POSTFIXDEC_K 0x812 #define G__OPR_PREFIXDEC_K 0x813 #define G__OPR_ADD_UU 0xa00 #define G__OPR_SUB_UU 0xa01 #define G__OPR_MUL_UU 0xa02 #define G__OPR_DIV_UU 0xa03 #define G__OPR_LT_UU 0xa04 #define G__OPR_GT_UU 0xa05 #define G__OPR_LE_UU 0xa06 #define G__OPR_GE_UU 0xa07 #define G__OPR_EQ_UU 0xa08 #define G__OPR_NE_UU 0xa09 #define G__OPR_ADDASSIGN_UU 0xa0a #define G__OPR_SUBASSIGN_UU 0xa0b #define G__OPR_MULASSIGN_UU 0xa0c #define G__OPR_DIVASSIGN_UU 0xa0d #define G__OPR_ADD_II 0x100 #define G__OPR_SUB_II 0x101 #define G__OPR_MUL_II 0x102 #define G__OPR_DIV_II 0x103 #define G__OPR_LT_II 0x104 #define G__OPR_GT_II 0x105 #define G__OPR_LE_II 0x106 #define G__OPR_GE_II 0x107 #define G__OPR_EQ_II 0x108 #define G__OPR_NE_II 0x109 #define G__OPR_ADDASSIGN_II 0x10a #define G__OPR_SUBASSIGN_II 0x10b #define G__OPR_MULASSIGN_II 0x10c #define G__OPR_DIVASSIGN_II 0x10d #define G__OPR_POSTFIXINC_D 0x210 #define G__OPR_PREFIXINC_D 0x211 #define G__OPR_POSTFIXDEC_D 0x212 #define G__OPR_PREFIXDEC_D 0x213 #define G__OPR_POSTFIXINC_F 0x310 #define G__OPR_PREFIXINC_F 0x311 #define G__OPR_POSTFIXDEC_F 0x312 #define G__OPR_PREFIXDEC_F 0x313 #define G__OPR_ADD_DD 0x200 #define G__OPR_SUB_DD 0x201 #define G__OPR_MUL_DD 0x202 #define G__OPR_DIV_DD 0x203 #define G__OPR_LT_DD 0x204 #define G__OPR_GT_DD 0x205 #define G__OPR_LE_DD 0x206 #define G__OPR_GE_DD 0x207 #define G__OPR_EQ_DD 0x208 #define G__OPR_NE_DD 0x209 #define G__OPR_ADDASSIGN_DD 0x20a #define G__OPR_SUBASSIGN_DD 0x20b #define G__OPR_MULASSIGN_DD 0x20c #define G__OPR_DIVASSIGN_DD 0x20d #define G__OPR_ADDASSIGN_FD 0x30a #define G__OPR_SUBASSIGN_FD 0x30b #define G__OPR_MULASSIGN_FD 0x30c #define G__OPR_DIVASSIGN_FD 0x30d /************************************************************************** * G__reftype, var->reftype[], ifunc->reftype[] flag **************************************************************************/ #define G__PARANORMAL 0 #define G__PARAREFERENCE 1 #define G__PARAP2P 2 #define G__PARAP2P2P 3 #define G__PARAREF 100 #define G__PARAREFP2P 102 #define G__PARAREFP2P2P 103 #define G__PLVL(x) (x%10) #define G__REF(x) ((x/100)*100) #define G__POINTER2FUNC 0 #define G__FUNCRETURNP2F 1 #define G__POINTER2MEMFUNC 2 #define G__CONSTRUCTORFUNC 3 /************************************************************************** * var->constvar[] **************************************************************************/ #define G__VARIABLE 0 #define G__CONSTVAR 1 #define G__LOCKVAR 2 #define G__DYNCONST 2 #define G__PCONSTVAR 4 #define G__PCONSTCONSTVAR 5 #define G__CONSTFUNC 8 #define G__STATICCONST 0x10 /************************************************************************** * Class charasteristics **************************************************************************/ #define G__HAS_DEFAULTCONSTRUCTOR 0x01 #define G__HAS_COPYCONSTRUCTOR 0x02 #define G__HAS_CONSTRUCTOR 0x03 #define G__HAS_XCONSTRUCTOR 0x80 #define G__HAS_DESTRUCTOR 0x04 #define G__HAS_ASSIGNMENTOPERATOR 0x08 #define G__HAS_OPERATORNEW1ARG 0x10 #define G__HAS_OPERATORNEW2ARG 0x20 #define G__HAS_OPERATORNEW 0x30 #define G__HAS_OPERATORDELETE 0x40 /************************************************************************** * Default parameter expression as function **************************************************************************/ #define G__DEFAULT_FUNCCALL 9 /************************************************************************** * break,continue,goto,default statement **************************************************************************/ #define G__SWITCH_START -3229 #define G__SWITCH_DEFAULT -1000 #define G__BLOCK_BREAK -1001 #define G__BLOCK_CONTINUE -1002 /************************************************************************** * ByteCode compiler (loops only) * * Following macro definitions accelarates the most inner loop execution * by factor of 4. * Search macro symble G__ASM to figure out related source for the inner * loop compiler. * With -O0 command line option, the inner loop compilation mode can be * turned off. **************************************************************************/ /********************************************* * loop compile mode turned on *********************************************/ #define G__ASM /********************************************* * Old style compiled function name buffer size *********************************************/ #define G__ASM_FUNCNAMEBUF 200 /********************************************* * Loop compile optimizer turned on *********************************************/ #define G__ASM_OPTIMIZE /********************************************* * Nested loop compilation *********************************************/ #define G__ASM_NESTING /********************************************* * ifunc compilation *********************************************/ #define G__ASM_IFUNC /********************************************* * loop compile debug mode * Not defined usually. Needed only when * debugging of inner loop compiler. *********************************************/ #ifdef G__DEBUG #define G__ASM_DBG #endif #ifdef G__ASM /********************************************* * p-code instructions * Instructions which appears frequently in * typical application is assigned to a smaller * number. This speeds up the execution by * 10~20%. *********************************************/ #define G__LDST_VAR_P (long)0x7fff0000 #define G__LDST_LVAR_P (long)0x7fff0001 #define G__LDST_MSTR_P (long)0x7fff0002 #define G__LDST_VAR_INDEX (long)0x7fff0003 #define G__LDST_VAR_INDEX_OPR (long)0x7fff0004 #define G__OP2_OPTIMIZED (long)0x7fff0005 #define G__OP1_OPTIMIZED (long)0x7fff0006 #define G__LD (long)0x7fff0007 #define G__CL (long)0x7fff0008 #define G__OP2 (long)0x7fff0009 #define G__CMPJMP (long)0x7fff000a #define G__INCJMP (long)0x7fff000b #define G__CNDJMP (long)0x7fff000c #define G__JMP (long)0x7fff000d #define G__POP (long)0x7fff000e #define G__LD_FUNC (long)0x7fff000f #define G__RETURN (long)0x7fff0010 #define G__CAST (long)0x7fff0011 #define G__OP1 (long)0x7fff0012 #define G__LETVVAL (long)0x7fff0013 #define G__ADDSTROS (long)0x7fff0014 #define G__LETPVAL (long)0x7fff0015 #define G__TOPNTR (long)0x7fff0016 #define G__NOT (long)0x7fff0017 #define G__BOOL (long)0x7fff0018 #define G__ISDEFAULTPARA (long)0x7fff0019 #define G__LD_VAR (long)0x7fff001a #define G__ST_VAR (long)0x7fff001b #define G__LD_MSTR (long)0x7fff001c #define G__ST_MSTR (long)0x7fff001d #define G__LD_LVAR (long)0x7fff001e #define G__ST_LVAR (long)0x7fff001f #define G__CMP2 (long)0x7fff0020 #define G__PUSHSTROS (long)0x7fff0021 #define G__SETSTROS (long)0x7fff0022 #define G__POPSTROS (long)0x7fff0023 #define G__SETTEMP (long)0x7fff0024 #define G__FREETEMP (long)0x7fff0025 #define G__GETRSVD (long)0x7fff0026 #define G__REWINDSTACK (long)0x7fff0027 #define G__CND1JMP (long)0x7fff0028 #define G__LD_IFUNC (long)0x7fff0029 #define G__NEWALLOC (long)0x7fff002a #define G__SET_NEWALLOC (long)0x7fff002b #define G__DELETEFREE (long)0x7fff002c #define G__SWAP (long)0x7fff002d #define G__BASECONV (long)0x7fff002e #define G__STORETEMP (long)0x7fff002f #define G__ALLOCTEMP (long)0x7fff0030 #define G__POPTEMP (long)0x7fff0031 #define G__REORDER (long)0x7fff0032 #define G__LD_THIS (long)0x7fff0033 #define G__RTN_FUNC (long)0x7fff0034 #define G__SETMEMFUNCENV (long)0x7fff0035 #define G__RECMEMFUNCENV (long)0x7fff0036 #define G__ADDALLOCTABLE (long)0x7fff0037 #define G__DELALLOCTABLE (long)0x7fff0038 /* #define G__BASECONSTRUCT (long)0x7fff00XX */ #define G__BASEDESTRUCT (long)0x7fff0039 #define G__REDECL (long)0x7fff003a #define G__TOVALUE (long)0x7fff003b #define G__INIT_REF (long)0x7fff003c #define G__PUSHCPY (long)0x7fff003d #define G__LETNEWVAL (long)0x7fff003e #define G__SETGVP (long)0x7fff003f #define G__TOPVALUE (long)0x7fff0040 #define G__CTOR_SETGVP (long)0x7fff0041 #define G__TRY (long)0x7fff0042 #define G__TYPEMATCH (long)0x7fff0043 #define G__ALLOCEXCEPTION (long)0x7fff0044 #define G__DESTROYEXCEPTION (long)0x7fff0045 #define G__THROW (long)0x7fff0046 #define G__CATCH (long)0x7fff0047 /* never used */ #define G__SETARYINDEX (long)0x7fff0048 #define G__RESETARYINDEX (long)0x7fff0049 #define G__GETARYINDEX (long)0x7fff004a #define G__ENTERSCOPE (long)0x7fff004b #define G__EXITSCOPE (long)0x7fff004c #define G__PUTAUTOOBJ (long)0x7fff004d #define G__PUTHEAPOBJ (long)0x7fff004e /* not implemented yet */ #define G__CASE (long)0x7fff004f /* #define G__SETARYCTOR (long)0x7fff0050 */ #define G__MEMCPY (long)0x7fff0050 #define G__MEMSETINT (long)0x7fff0051 #define G__JMPIFVIRTUALOBJ (long)0x7fff0052 #define G__VIRTUALADDSTROS (long)0x7fff0053 #define G__PAUSE (long)0x7fff00fe #define G__NOP (long)0x7fff00ff #ifdef G__NEVER #define G__INSTMASK (long)0x7fff000000ff #define G__LINENUMMASK (long)0x7fffffffff00 /* #define G__INST(x) (x&G__INSTMASK) */ /* not ready yet */ #define G__LINE(x) ((x&G__LINEMASK)/0x100) #else #define G__INST(x) x #endif /******************************************** * G__TRY G__bc_exec_try_bytecode return value ********************************************/ #define G__TRY_NORMAL 1 #define G__TRY_INTERPRETED_EXCEPTION 2 #define G__TRY_COMPILED_EXCEPTION 3 #define G__TRY_UNCAUGHT 9 struct G__breakcontinue_list { int destination; int breakcontinue; struct G__breakcontinue_list *prev; }; /********************************************* * loop compiler * limit numbers *********************************************/ #define G__MAXINST 0x1000 #define G__MAXSTACK 0x100 #define G__MAXSTRSTACK 0x10 /********************************************* * G__CL line+filenum offset *********************************************/ #define G__CL_LINEMASK 0x000fffff #define G__CL_FILEMASK 0x00000fff #define G__CL_FILESHIFT 0x00100000 /********************************************* * macros for loop compiler *********************************************/ #define G__ALLOC_ASMENV \ int store_asm_exec,store_asm_loopcompile #define G__STORE_ASMENV \ store_asm_exec = G__asm_exec; \ store_asm_loopcompile=G__asm_loopcompile; \ if(store_asm_exec) G__asm_loopcompile=0; \ G__asm_exec = 0 #define G__RECOVER_ASMENV \ G__asm_exec=store_asm_exec; \ G__asm_loopcompile=G__asm_loopcompile_mode /********************************************* * whole function bytecode compilation flag *********************************************/ #ifdef G__ASM_WHOLEFUNC #define G__ASM_FUNC_NOP 0x00 #define G__ASM_FUNC_COMPILE 0x01 #define G__ASM_FUNC_EXEC 0x02 #define G__ASM_FUNC_COMPILEEXEC 0x03 /* number of line to try bytecode compilation */ #define G__ASM_BYTECODE_FUNC_LIMIT G__MAXINST #define G__ASM_VARGLOBAL 0x00 #define G__ASM_VARLOCAL 0x01 #endif /* G__ASM_WHOLEFUNC */ #define G__LOCAL_VAR 0 #define G__GLOBAL_VAR 1 #define G__BYTECODELOCAL_VAR 2 #endif /* of G__ASM */ /************************************************************************** * signal handling **************************************************************************/ #define G__SIGNAL /************************************************************************** * class template **************************************************************************/ #define G__TEMPLATECLASS #define G__TEMPLATEMEMFUNC #define G__TEMPLATEFUNC /* Experimental */ #ifdef G__TEMPLATECLASS #define G__TMPLT_CLASSARG 'u' #define G__TMPLT_TMPLTARG 't' #define G__TMPLT_SIZEARG 'o' #define G__TMPLT_CHARARG 'c' #define G__TMPLT_UCHARARG 'b' #define G__TMPLT_INTARG 'i' #define G__TMPLT_UINTARG 'h' #define G__TMPLT_SHORTARG 's' #define G__TMPLT_USHORTARG 'r' #define G__TMPLT_LONGARG 'l' #define G__TMPLT_ULONGARG 'k' #define G__TMPLT_FLOATARG 'f' #define G__TMPLT_DOUBLEARG 'd' #define G__TMPLT_POINTERARG1 0x10000 #define G__TMPLT_POINTERARG2 0x20000 #define G__TMPLT_POINTERARG3 0x30000 #define G__TMPLT_POINTERARGMASK 0xffff0000 #define G__TMPLT_CONSTARG 0x100 #define G__TMPLT_REFERENCEARG 0x200 #ifdef G__TEMPLATEMEMFUNC /* Doubly linked list of long int, methods are described in tmplt.c */ struct G__IntList { long i; struct G__IntList *prev; struct G__IntList *next; }; struct G__Definedtemplatememfunc { int line; int filenum; FILE *def_fp; fpos_t def_pos; struct G__Definedtemplatememfunc *next; }; #endif struct G__Templatearg { int type; char *string; char *default_parameter; struct G__Templatearg *next; }; struct G__Definedtemplateclass { char *name; int hash; int line; int filenum; FILE *def_fp; fpos_t def_pos; struct G__Templatearg *def_para; #ifdef G__TEMPLATEMEMFUNC struct G__Definedtemplatememfunc memfunctmplt; #endif struct G__Definedtemplateclass *next; int parent_tagnum; struct G__IntList *instantiatedtagnum; int isforwarddecl; int friendtagnum; struct G__Definedtemplateclass *specialization; struct G__Templatearg *spec_arg; }; #ifdef G__TEMPLATEFUNC struct G__Templatefuncarg { int paran; char type[G__MAXFUNCPARA]; int tagnum[G__MAXFUNCPARA]; int typenum[G__MAXFUNCPARA]; int reftype[G__MAXFUNCPARA]; char paradefault[G__MAXFUNCPARA]; int argtmplt[G__MAXFUNCPARA]; int *ntarg[G__MAXFUNCPARA]; int nt[G__MAXFUNCPARA]; char **ntargc[G__MAXFUNCPARA]; }; struct G__Definetemplatefunc { char *name; int hash; struct G__Templatearg *def_para; struct G__Templatefuncarg func_para; /* need to refine here */ int line; int filenum; FILE *def_fp; fpos_t def_pos; struct G__Definetemplatefunc *next; int parent_tagnum; int friendtagnum; }; #endif /* G__TEMPLATEFUNC */ #endif /* G__TEMPLATECLASS */ /************************************************************************** * Macro statement support **************************************************************************/ /* print out warning for macro statement and function form macro */ #define G__WARNPREP #define G__MACROSTATEMENT #define G__FUNCMACRO struct G__Charlist { char *string; struct G__Charlist *next; }; struct G__Callfuncmacro{ FILE *call_fp; fpos_t call_pos; int line; fpos_t mfp_pos; struct G__Callfuncmacro *next; short call_filenum; } ; struct G__Deffuncmacro { char *name; int hash; int line; FILE *def_fp; fpos_t def_pos; struct G__Charlist def_para; struct G__Callfuncmacro callfuncmacro; struct G__Deffuncmacro *next; short def_filenum; } ; /************************************************************************** * Text processing capability * * fp=fopen("xxx","r"); * while($read(fp)) { * printf("%d %s %s\n",$#,$1,$2); * } **************************************************************************/ #define G__TEXTPROCESSING #define G__RSVD_LINE -1 #define G__RSVD_FILE -2 #define G__RSVD_ARG -3 #define G__RSVD_DATE -4 #define G__RSVD_TIME -5 /************************************************************************** * preprocessed file keystring list **************************************************************************/ struct G__Preprocessfilekey { char *keystring; struct G__Preprocessfilekey *next; }; /************************************************************************** * allocation of array by new operator ? **************************************************************************/ struct G__newarylist { long point; int pinc; struct G__newarylist *next; }; /************************************************************************** * integration of G__atpause() function **************************************************************************/ #define G__ATPAUSE /************************************************************************** * struct for storing base class constructor **************************************************************************/ struct G__baseparam { char *name; char *param; struct G__baseparam *next; }; /************************************************************************** * flag argument to G__getfunction() **************************************************************************/ #define G__TRYNORMAL 0 #define G__CALLMEMFUNC 1 #define G__TRYMEMFUNC 2 #define G__CALLCONSTRUCTOR 3 #define G__TRYCONSTRUCTOR 4 #define G__TRYDESTRUCTOR 5 #define G__CALLSTATICMEMFUNC 6 #define G__TRYUNARYOPR 7 #define G__TRYBINARYOPR 8 #ifndef G__OLDIMPLEMENTATINO1250 #define G__TRYIMPLICITCONSTRUCTOR 7 #endif /******************************************************************** * include path by -I option * Used in G__main() and G__loadfile() ********************************************************************/ struct G__includepath { char *pathname; struct G__includepath *next; }; /********************************************************************* * Sharedlibrary table *********************************************************************/ #ifdef G__SHAREDLIB #define G__AUTOCOMPILE #endif /* G__SHAREDLIB */ #define G__MAX_SL 150 /********************************************************************* * debugging flag *********************************************************************/ #define G__TESTBREAK 0x30 #define G__BREAK 0x10 #define G__NOBREAK 0xef #define G__CONTUNTIL 0x20 #define G__NOCONTUNTIL 0xdf #define G__TRACED 0x01 #define G__NOTRACED 0xfe /********************************************************************* * const string list *********************************************************************/ struct G__ConstStringList { char *string; int hash; struct G__ConstStringList *prev; }; /********************************************************************* * scratch upto dictionary position *********************************************************************/ struct G__dictposition { /* global variable table position */ struct G__var_array *var; int ig15; /* struct tagnum */ int tagnum; /* const string table */ struct G__ConstStringList *conststringpos; /* typedef table */ int typenum; /* global function table position */ struct G__ifunc_table *ifunc; int ifn; /* include path */ struct G__includepath *ipath; /* shared library file */ int allsl; /* preprocessfilekey */ struct G__Preprocessfilekey *preprocessfilekey; /* input file */ int nfile; /* macro table */ struct G__Deffuncmacro *deffuncmacro; /* template class */ struct G__Definedtemplateclass *definedtemplateclass; /* function template */ struct G__Definetemplatefunc *definedtemplatefunc; char* ptype; /* struct,union,enum,class */ }; #ifdef G__SECURITY #ifdef G__64BIT typedef unsigned int G__UINT32 ; #else typedef unsigned long G__UINT32 ; #endif #endif typedef void (*G__DLLINIT)(); #define G__NONCINTHDR 0x01 #define G__CINTHDR 0x10 struct G__filetable { FILE *fp; int hash; char *filename; char *prepname; char *breakpoint; int maxline; struct G__dictposition *dictpos; G__UINT32 security; int included_from; /* filenum of the file which first include this one */ int ispermanentsl; G__DLLINIT initsl; struct G__dictposition *hasonlyfunc; char hdrprop; #ifndef G__OLDIMPLEMENTATION1649 char *str; int vindex; #endif int parent_tagnum; int slindex; }; /************************************************************************** * user specified pragma statement **************************************************************************/ struct G__AppPragma { char *name; void *p2f; struct G__AppPragma *next; }; /************************************************************************** * Flag to check global operator new/delete() **************************************************************************/ #define G__IS_OPERATOR_NEW 0x01 #define G__IS_OPERATOR_DELETE 0x02 #define G__MASK_OPERATOR_NEW 0x04 #define G__MASK_OPERATOR_DELETE 0x08 #define G__NOT_USING_2ARG_NEW 0x10 #define G__DUMMYARG_NEWDELETE 0x100 #define G__DUMMYARG_NEWDELETE_STATIC 0x200 /************************************************************************** * Stub function mode **************************************************************************/ #define G__SPECIFYLINK 1 #define G__SPECIFYSTUB 2 /********************************************************************** * Multi-byte character handling in comment and string **********************************************************************/ #ifdef G__MULTIBYTE #define G__UNKNOWNCODING 0 #define G__EUC 1 #define G__SJIS 2 #define G__JIS 3 #define G__ONEBYTE 4 /* ISO-8859-x */ /* checking both EUC and S-JIS by flag */ #define G__IsDBCSLeadByte(c) ((0x80&c)&&G__EUC!=G__lang&&G__CodingSystem(c)) /* Checking multi-byte coding system by 2nd byte, * MSB of 2nd byte may be 0 in S-JIS */ #define G__CheckDBCS2ndByte(c) if(0==(0x80&c)) G__lang=G__SJIS #endif /********************************************************************** * hash token for some symbol **********************************************************************/ #define G__HASH_MAIN 421 #define G__HASH_OPERATOR 876 /********************************************************************* * return status flag *********************************************************************/ #define G__RETURN_NON 0 #define G__RETURN_NORMAL 1 #define G__RETURN_IMMEDIATE 2 #define G__RETURN_TRY -1 #define G__RETURN_EXIT1 4 #define G__RETURN_EXIT2 5 /********************************************************************* * G__isanybase, G__ispublicbase static resolution *********************************************************************/ #define G__STATICRESOLUTION 2 /* for G__isanybase */ #define G__STATICRESOLUTION2 2 /* for G__ispublicbase */ /********************************************************************* * x *********************************************************************/ #define G__NAMEDMACROEXT "NM" #define G__NAMEDMACROEXT2 "_cintNM" /********************************************************************* * G__rootmode and G__ReadInputMode() in pause.c *********************************************************************/ #define G__INPUTCXXMODE 3 #define G__INPUTROOTMODE 1 #define G__INPUTCINTMODE 0 /*********************************************************************** * for function overloading **********************************************************************/ struct G__funclist { struct G__ifunc_table *ifunc; int ifn; unsigned int rate; unsigned int p_rate[G__MAXFUNCPARA]; struct G__funclist *prev; }; /********************************************************************* * variable length string buffer *********************************************************************/ /* #define G__BUFLEN 34 */ #define G__BUFLEN 80 /********************************************************************* * variable length string buffer *********************************************************************/ #define G__LONGLONG 1 #define G__ULONGLONG 2 #define G__LONGDOUBLE 3 /********************************************************************* * cintv6, flags *********************************************************************/ /* G__cintv6 flags */ /* #define G__CINT_VER6 1 */ /* defined in platform configuration */ #define G__BC_CINTVER6 0x01 #define G__BC_COMPILEERROR 0x02 #define G__BC_RUNTIMEERROR 0x04 #define G__BC_DEBUG 0x08 /********************************************************************* * debug interface *********************************************************************/ struct G__store_env { struct G__var_array *var_local; long struct_offset; int tagnum; int exec_memberfunc; }; struct G__view { struct G__input_file file; struct G__var_array *var_local; long struct_offset; int tagnum; int exec_memberfunc; long localmem; }; /********************************************************************* * cint parser function and global variable prototypes *********************************************************************/ #include "security.h" #include "fproto.h" #include "global.h" #endif /* G__COMMON_H */ /* * Local Variables: * c-tab-always-indent:nil * c-indent-level:2 * c-continued-statement-offset:2 * c-brace-offset:-2 * c-brace-imaginary-offset:0 * c-argdecl-indent:0 * c-label-offset:-2 * compile-command:"make -k" * End: */