e021fe2008-04-14Henrik Grubbström (Grubba) /* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
ec53782008-05-18Henrik Grubbström (Grubba) || $Id: pike_compiler.h,v 1.13 2008/05/18 15:36:23 grubba Exp $
e021fe2008-04-14Henrik Grubbström (Grubba) */ #ifndef PIKE_COMPILER_H #define PIKE_COMPILER_H #include "lex.h" #include "program.h" struct compilation { struct Supporter supporter; struct pike_string *prog; /* String to compile. */ struct object *handler; /* error_handler */ struct object *compat_handler; /* compat_handler */
e048d52008-04-25Henrik Grubbström (Grubba)  int major, minor; /* Base compat version */
e021fe2008-04-14Henrik Grubbström (Grubba)  struct program *target; /* Program being compiled. */ struct object *placeholder;
41c9152008-04-18Henrik Grubbström (Grubba)  int flags;
e021fe2008-04-14Henrik Grubbström (Grubba)  struct program *p; /* Compiled program or NULL. */ struct lex lex; int compilation_inherit; /* Inherit in supporter->self containing * compilation_program. */
5b84a52008-04-26Henrik Grubbström (Grubba) 
8853882008-04-26Henrik Grubbström (Grubba)  struct svalue default_module; /* predef:: */
5b84a52008-04-26Henrik Grubbström (Grubba)  dynamic_buffer used_modules; /* Stack of svalues with imported * modules. */ INT32 num_used_modules; /* Number of entries on the stack. */
8853882008-04-26Henrik Grubbström (Grubba)  int compilation_depth; /* Current class nesting depth. */
e021fe2008-04-14Henrik Grubbström (Grubba)  int saved_threads_disabled; struct mapping *resolve_cache_save; }; #ifdef PIKE_DEBUG #define CHECK_COMPILER() do { \ if (!Pike_fp || !compilation_program || \ Pike_fp->context->prog != compilation_program) { \ Pike_fatal("Invalid compilation context!\n"); \ } \ } while(0) #else #define CHECK_COMPILER() #endif #define THIS_COMPILATION ((struct compilation *)(Pike_fp->current_storage)) #define MAYBE_THIS_COMPILATION ((Pike_fp && compilation_program && (Pike_fp->context->prog == compilation_program))?THIS_COMPILATION:NULL)
41c9152008-04-18Henrik Grubbström (Grubba) /* Flags. */ #define COMPILER_BUSY 1 /* The compiler is busy compiling. */ #define COMPILER_DONE 2 /* The is finished compiling. */
75a0402008-04-14Henrik Grubbström (Grubba) /* Report levels */
e5c8b42008-04-19Henrik Grubbström (Grubba) #define REPORT_NOTICE 0 /* FYI. */
75a0402008-04-14Henrik Grubbström (Grubba) #define REPORT_WARNING 1 /* Compiler warning. */ #define REPORT_ERROR 2 /* Compilation error. */ #define REPORT_FATAL 3 /* Unrecoverable error. */
41c9152008-04-18Henrik Grubbström (Grubba) /* CompilerEnvironment function numbers. */
17799f2008-04-24Henrik Grubbström (Grubba) #define CE_REPORT_FUN_NUM 0 #define CE_COMPILE_FUN_NUM 1 #define CE_RESOLV_FUN_NUM 2 #define CE_PIKE_COMPILER_FUN_NUM 3 #define CE_GET_COMPILATION_HANDLER_FUN_NUM 4 #define CE_GET_DEFAULT_MODULE_FUN_NUM 5
1f91c02008-05-02Henrik Grubbström (Grubba) #define CE_HANDLE_INHERIT_FUN_NUM 6
41c9152008-04-18Henrik Grubbström (Grubba)  /* PikeCompiler function numbers. */
17799f2008-04-24Henrik Grubbström (Grubba) #define PC_REPORT_FUN_NUM 0 #define PC_COMPILE_FUN_NUM 1 #define PC_RESOLV_FUN_NUM 2 #define PC_CREATE_FUN_NUM 3 #define PC_GET_COMPILATION_HANDLER_FUN_NUM 4 #define PC_GET_DEFAULT_MODULE_FUN_NUM 5 #define PC_CHANGE_COMPILER_COMPATIBILITY_FUN_NUM 6
1f91c02008-05-02Henrik Grubbström (Grubba) #define PC_HANDLE_INHERIT_FUN_NUM 7
08e8662008-05-03Henrik Grubbström (Grubba) #define PC_POP_TYPE_ATTRIBUTE_FUN_NUM 8 #define PC_PUSH_TYPE_ATTRIBUTE_FUN_NUM 9
b0b9392008-05-04Henrik Grubbström (Grubba) #define PC_APPLY_TYPE_ATTRIBUTE_FUN_NUM 10
ec53782008-05-18Henrik Grubbström (Grubba) #define PC_APPLY_ATTRIBUTE_CONSTANT_FUN_NUM 11
e021fe2008-04-14Henrik Grubbström (Grubba)  #endif /* !PIKE_COMPILER_H */