source: trunk/utils.h @ 1

Last change on this file since 1 was 1, checked in by moo, 9 years ago

initial import to online

File size: 1.7 KB
RevLine 
[1]1#include "php.h"
2
3typedef struct {
4    int alloc;
5    zend_op_array *op_array;
6    HashTable *function_table;
7    HashTable *class_table;
8} xc_compile_result_t;
9
10xc_compile_result_t *xc_compile_result_init(xc_compile_result_t *cr,
11        zend_op_array *op_array,
12        HashTable *function_table,
13        HashTable *class_table);
14void xc_compile_result_free(xc_compile_result_t *cr);
15xc_compile_result_t *xc_compile_result_init_cur(xc_compile_result_t *cr, zend_op_array *op_array TSRMLS_DC);
16/* apply func */
17int xc_apply_function(zend_function *zf, apply_func_t applyer TSRMLS_DC);
18int xc_apply_class(zend_class_entry *ce, apply_func_t applyer TSRMLS_DC);
19int xc_apply_op_array(xc_compile_result_t *cr, apply_func_t applyer TSRMLS_DC);
20
21int xc_undo_pass_two(zend_op_array *op_array TSRMLS_DC);
22int xc_redo_pass_two(zend_op_array *op_array TSRMLS_DC);
23int xc_fix_opcode(zend_op_array *op_array TSRMLS_DC);
24int xc_undo_fix_opcode(zend_op_array *op_array TSRMLS_DC);
25zend_uchar xc_get_fixed_opcode(zend_uchar opcode, int line);
26
27/* installer */
28void xc_install_function(char *filename, zend_function *func, zend_uchar type, char *key, uint len TSRMLS_DC);
29ZESW(xc_cest_t *, void) xc_install_class(char *filename, xc_cest_t *cest, zend_uchar type, void *key, uint len TSRMLS_DC);
30
31/* sandbox */
32typedef struct {
33    int alloc;
34    char *filename;
35
36    HashTable orig_included_files;
37    zend_llist orig_open_files;
38    HashTable *tmp_included_files;
39    zend_llist *tmp_open_files;
40
41    HashTable *orig_function_table;
42    HashTable *orig_class_table;
43    HashTable tmp_function_table;
44    HashTable tmp_class_table;
45} xc_sandbox_t;
46
47xc_sandbox_t *xc_sandbox_init(xc_sandbox_t *sandbox, char *filename TSRMLS_DC);
48void xc_sandbox_free(xc_sandbox_t *sandbox, int install TSRMLS_DC);
Note: See TracBrowser for help on using the repository browser.