Annotation of embedaddon/php/Zend/zend_globals.h, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | Zend Engine |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1998-2012 Zend Technologies Ltd. (http://www.zend.com) |
! 6: +----------------------------------------------------------------------+
! 7: | This source file is subject to version 2.00 of the Zend license, |
! 8: | that is bundled with this package in the file LICENSE, and is |
! 9: | available through the world-wide-web at the following url: |
! 10: | http://www.zend.com/license/2_00.txt. |
! 11: | If you did not receive a copy of the Zend license and are unable to |
! 12: | obtain it through the world-wide-web, please send a note to |
! 13: | license@zend.com so we can mail you a copy immediately. |
! 14: +----------------------------------------------------------------------+
! 15: | Authors: Andi Gutmans <andi@zend.com> |
! 16: | Zeev Suraski <zeev@zend.com> |
! 17: +----------------------------------------------------------------------+
! 18: */
! 19:
! 20: /* $Id: zend_globals.h 321634 2012-01-01 13:15:04Z felipe $ */
! 21:
! 22: #ifndef ZEND_GLOBALS_H
! 23: #define ZEND_GLOBALS_H
! 24:
! 25:
! 26: #include <setjmp.h>
! 27:
! 28: #include "zend_globals_macros.h"
! 29:
! 30: #include "zend_stack.h"
! 31: #include "zend_ptr_stack.h"
! 32: #include "zend_hash.h"
! 33: #include "zend_llist.h"
! 34: #include "zend_objects.h"
! 35: #include "zend_objects_API.h"
! 36: #include "zend_modules.h"
! 37:
! 38: #ifdef ZEND_MULTIBYTE
! 39: #include "zend_multibyte.h"
! 40: #endif /* ZEND_MULTIBYTE */
! 41:
! 42: /* Define ZTS if you want a thread-safe Zend */
! 43: /*#undef ZTS*/
! 44:
! 45: #ifdef ZTS
! 46:
! 47: BEGIN_EXTERN_C()
! 48: ZEND_API extern int compiler_globals_id;
! 49: ZEND_API extern int executor_globals_id;
! 50: END_EXTERN_C()
! 51:
! 52: #endif
! 53:
! 54: #define SYMTABLE_CACHE_SIZE 32
! 55:
! 56:
! 57: #include "zend_compile.h"
! 58:
! 59: /* excpt.h on Digital Unix 4.0 defines function_table */
! 60: #undef function_table
! 61:
! 62: #define ZEND_EARLY_BINDING_COMPILE_TIME 0
! 63: #define ZEND_EARLY_BINDING_DELAYED 1
! 64: #define ZEND_EARLY_BINDING_DELAYED_ALL 2
! 65:
! 66: typedef struct _zend_declarables {
! 67: zval ticks;
! 68: } zend_declarables;
! 69:
! 70: typedef struct _zend_vm_stack *zend_vm_stack;
! 71:
! 72: struct _zend_compiler_globals {
! 73: zend_stack bp_stack;
! 74: zend_stack switch_cond_stack;
! 75: zend_stack foreach_copy_stack;
! 76: zend_stack object_stack;
! 77: zend_stack declare_stack;
! 78:
! 79: zend_class_entry *active_class_entry;
! 80:
! 81: /* variables for list() compilation */
! 82: zend_llist list_llist;
! 83: zend_llist dimension_llist;
! 84: zend_stack list_stack;
! 85:
! 86: zend_stack function_call_stack;
! 87:
! 88: char *compiled_filename;
! 89:
! 90: int zend_lineno;
! 91:
! 92: char *heredoc;
! 93: int heredoc_len;
! 94:
! 95: zend_op_array *active_op_array;
! 96:
! 97: HashTable *function_table; /* function symbol table */
! 98: HashTable *class_table; /* class table */
! 99:
! 100: HashTable filenames_table;
! 101:
! 102: HashTable *auto_globals;
! 103:
! 104: zend_bool in_compilation;
! 105: zend_bool short_tags;
! 106: zend_bool asp_tags;
! 107: zend_bool allow_call_time_pass_reference;
! 108:
! 109: zend_declarables declarables;
! 110:
! 111: zend_bool unclean_shutdown;
! 112:
! 113: zend_bool ini_parser_unbuffered_errors;
! 114:
! 115: zend_llist open_files;
! 116:
! 117: long catch_begin;
! 118:
! 119: struct _zend_ini_parser_param *ini_parser_param;
! 120:
! 121: int interactive;
! 122:
! 123: zend_uint start_lineno;
! 124: zend_bool increment_lineno;
! 125:
! 126: znode implementing_class;
! 127:
! 128: zend_uint access_type;
! 129:
! 130: char *doc_comment;
! 131: zend_uint doc_comment_len;
! 132:
! 133: zend_uint compiler_options; /* set of ZEND_COMPILE_* constants */
! 134:
! 135: zval *current_namespace;
! 136: HashTable *current_import;
! 137: zend_bool in_namespace;
! 138: zend_bool has_bracketed_namespaces;
! 139:
! 140: HashTable *labels;
! 141: zend_stack labels_stack;
! 142:
! 143: #ifdef ZEND_MULTIBYTE
! 144: zend_encoding **script_encoding_list;
! 145: size_t script_encoding_list_size;
! 146: zend_bool detect_unicode;
! 147: zend_bool encoding_declared;
! 148:
! 149: zend_encoding *internal_encoding;
! 150:
! 151: /* multibyte utility functions */
! 152: zend_encoding_detector encoding_detector;
! 153: zend_encoding_converter encoding_converter;
! 154: zend_encoding_oddlen encoding_oddlen;
! 155: #endif /* ZEND_MULTIBYTE */
! 156:
! 157: #ifdef ZTS
! 158: HashTable **static_members;
! 159: int last_static_member;
! 160: #endif
! 161: };
! 162:
! 163:
! 164: struct _zend_executor_globals {
! 165: zval **return_value_ptr_ptr;
! 166:
! 167: zval uninitialized_zval;
! 168: zval *uninitialized_zval_ptr;
! 169:
! 170: zval error_zval;
! 171: zval *error_zval_ptr;
! 172:
! 173: zend_ptr_stack arg_types_stack;
! 174:
! 175: /* symbol table cache */
! 176: HashTable *symtable_cache[SYMTABLE_CACHE_SIZE];
! 177: HashTable **symtable_cache_limit;
! 178: HashTable **symtable_cache_ptr;
! 179:
! 180: zend_op **opline_ptr;
! 181:
! 182: HashTable *active_symbol_table;
! 183: HashTable symbol_table; /* main symbol table */
! 184:
! 185: HashTable included_files; /* files already included */
! 186:
! 187: JMP_BUF *bailout;
! 188:
! 189: int error_reporting;
! 190: int orig_error_reporting;
! 191: int exit_status;
! 192:
! 193: zend_op_array *active_op_array;
! 194:
! 195: HashTable *function_table; /* function symbol table */
! 196: HashTable *class_table; /* class table */
! 197: HashTable *zend_constants; /* constants table */
! 198:
! 199: zend_class_entry *scope;
! 200: zend_class_entry *called_scope; /* Scope of the calling class */
! 201:
! 202: zval *This;
! 203:
! 204: long precision;
! 205:
! 206: int ticks_count;
! 207:
! 208: zend_bool in_execution;
! 209: HashTable *in_autoload;
! 210: zend_function *autoload_func;
! 211: zend_bool full_tables_cleanup;
! 212:
! 213: /* for extended information support */
! 214: zend_bool no_extensions;
! 215:
! 216: #ifdef ZEND_WIN32
! 217: zend_bool timed_out;
! 218: OSVERSIONINFOEX windows_version_info;
! 219: #endif
! 220:
! 221: HashTable regular_list;
! 222: HashTable persistent_list;
! 223:
! 224: zend_vm_stack argument_stack;
! 225:
! 226: int user_error_handler_error_reporting;
! 227: zval *user_error_handler;
! 228: zval *user_exception_handler;
! 229: zend_stack user_error_handlers_error_reporting;
! 230: zend_ptr_stack user_error_handlers;
! 231: zend_ptr_stack user_exception_handlers;
! 232:
! 233: zend_error_handling_t error_handling;
! 234: zend_class_entry *exception_class;
! 235:
! 236: /* timeout support */
! 237: int timeout_seconds;
! 238:
! 239: int lambda_count;
! 240:
! 241: HashTable *ini_directives;
! 242: HashTable *modified_ini_directives;
! 243:
! 244: zend_objects_store objects_store;
! 245: zval *exception, *prev_exception;
! 246: zend_op *opline_before_exception;
! 247: zend_op exception_op[3];
! 248:
! 249: struct _zend_execute_data *current_execute_data;
! 250:
! 251: struct _zend_module_entry *current_module;
! 252:
! 253: zend_property_info std_property_info;
! 254:
! 255: zend_bool active;
! 256:
! 257: void *saved_fpu_cw;
! 258:
! 259: void *reserved[ZEND_MAX_RESERVED_RESOURCES];
! 260: };
! 261:
! 262: struct _zend_ini_scanner_globals {
! 263: zend_file_handle *yy_in;
! 264: zend_file_handle *yy_out;
! 265:
! 266: unsigned int yy_leng;
! 267: unsigned char *yy_start;
! 268: unsigned char *yy_text;
! 269: unsigned char *yy_cursor;
! 270: unsigned char *yy_marker;
! 271: unsigned char *yy_limit;
! 272: int yy_state;
! 273: zend_stack state_stack;
! 274:
! 275: char *filename;
! 276: int lineno;
! 277:
! 278: /* Modes are: ZEND_INI_SCANNER_NORMAL, ZEND_INI_SCANNER_RAW */
! 279: int scanner_mode;
! 280: };
! 281:
! 282: struct _zend_php_scanner_globals {
! 283: zend_file_handle *yy_in;
! 284: zend_file_handle *yy_out;
! 285:
! 286: unsigned int yy_leng;
! 287: unsigned char *yy_start;
! 288: unsigned char *yy_text;
! 289: unsigned char *yy_cursor;
! 290: unsigned char *yy_marker;
! 291: unsigned char *yy_limit;
! 292: int yy_state;
! 293: zend_stack state_stack;
! 294:
! 295: #ifdef ZEND_MULTIBYTE
! 296: /* original (unfiltered) script */
! 297: unsigned char *script_org;
! 298: size_t script_org_size;
! 299:
! 300: /* filtered script */
! 301: unsigned char *script_filtered;
! 302: size_t script_filtered_size;
! 303:
! 304: /* input/ouput filters */
! 305: zend_encoding_filter input_filter;
! 306: zend_encoding_filter output_filter;
! 307: zend_encoding *script_encoding;
! 308: zend_encoding *internal_encoding;
! 309: #endif /* ZEND_MULTIBYTE */
! 310: };
! 311:
! 312: #endif /* ZEND_GLOBALS_H */
! 313:
! 314: /*
! 315: * Local variables:
! 316: * tab-width: 4
! 317: * c-basic-offset: 4
! 318: * indent-tabs-mode: t
! 319: * End:
! 320: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>