Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "zend_ast.h"
- #include "zend_API.h"
- #include "zend_operators.h"
- #include "zend_language_parser.h"
- #include "zend_smart_str.h"
- #include "zend_exceptions.h"
- #include "zend_constants.h"
- ZEND_API zend_ast_process_t zend_ast_process = NULL;
- static inline void *zend_ast_alloc(size_t size) {
- return zend_arena_alloc(&CG(ast_arena), size);
- }
- static inline void *zend_ast_realloc(void *old, size_t old_size, size_t new_size) {
- void *new = zend_ast_alloc(new_size);
- memcpy(new, old, old_size);
- return new;
- }
- static inline size_t zend_ast_size(uint32_t children) {
- return sizeof(zend_ast) - sizeof(zend_ast *) + sizeof(zend_ast *) * children;
- }
- static inline size_t zend_ast_list_size(uint32_t children) {
- return sizeof(zend_ast_list) - sizeof(zend_ast *) + sizeof(zend_ast *) * children;
- }
- // Errors start here from this asterisk.
- ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_znode(znode *node) {
- zend_ast_znode *ast;
- ast = zend_ast_alloc(sizeof(zend_ast_znode));
- ast->kind = ZEND_AST_ZNODE;
- ast->attr = 0;
- ast->lineno = CG(zend_lineno);
- ast->node = *node;
- return (zend_ast *) ast;
- }
- static zend_always_inline zend_ast * zend_ast_create_zval_int(zval *zv, uint32_t attr, uint32_t lineno) {
- zend_ast_zval *ast;
- ast = zend_ast_alloc(sizeof(zend_ast_zval));
- ast->kind = ZEND_AST_ZVAL;
- ast->attr = attr;
- ZVAL_COPY_VALUE(&ast->val, zv);
- Z_LINENO(ast->val) = lineno;
- return (zend_ast *) ast;
- }
Add Comment
Please, Sign In to add comment