Ignore:
Timestamp:
2012-03-25T04:14:44+02:00 (3 years ago)
Author:
moo
Message:

PHP_5_4: improves traits support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/processor.m4

    r833 r837  
    1616/* }}} */ 
    1717dnl ==================================================== 
    18 dnl {{{ zend_compiled_variable 
    1918#ifdef IS_CV 
    20 DEF_STRUCT_P_FUNC(`zend_compiled_variable', , ` 
     19DEF_STRUCT_P_FUNC(`zend_compiled_variable', , `dnl {{{ 
    2120    DISPATCH(int, name_len) 
    2221    PROC_ZSTRING_L(, name, name_len) 
    2322    DISPATCH(ulong, hash_value) 
    2423') 
    25 #endif 
    26 dnl }}} 
    27 dnl {{{ zend_uint 
    28 DEF_STRUCT_P_FUNC(`zend_uint', , ` 
     24dnl }}} 
     25#endif 
     26DEF_STRUCT_P_FUNC(`zend_uint', , `dnl {{{ 
    2927    IFCOPY(`dst[0] = src[0];') 
    3028    IFDPRINT(` 
     
    3533') 
    3634dnl }}} 
    37 dnl {{{ int 
    3835#ifndef ZEND_ENGINE_2 
    39 DEF_STRUCT_P_FUNC(`int', , ` 
     36DEF_STRUCT_P_FUNC(`int', , `dnl {{{ 
    4037    IFCOPY(`*dst = *src;') 
    4138    IFDPRINT(` 
     
    4542    DONE_SIZE(sizeof(src[0])) 
    4643') 
    47 #endif 
    48 dnl }}} 
    49 dnl {{{ zend_try_catch_element 
    50 #ifdef ZEND_ENGINE_2 
    51 DEF_STRUCT_P_FUNC(`zend_try_catch_element', , ` 
     44dnl }}} 
     45#endif 
     46#ifdef ZEND_ENGINE_2 
     47DEF_STRUCT_P_FUNC(`zend_try_catch_element', , `dnl {{{ 
    5248    DISPATCH(zend_uint, try_op) 
    5349    DISPATCH(zend_uint, catch_op) 
    5450') 
    55 #endif /* ifdef ZEND_ENGINE_2 */ 
    56 dnl }}} 
    57 dnl {{{ zend_brk_cont_element 
    58 DEF_STRUCT_P_FUNC(`zend_brk_cont_element', , ` 
     51dnl }}} 
     52#endif 
     53DEF_STRUCT_P_FUNC(`zend_brk_cont_element', , `dnl {{{ 
    5954#ifdef ZEND_ENGINE_2_2 
    6055    DISPATCH(int, start) 
     
    227222') 
    228223dnl }}} 
    229 dnl {{{ zend_arg_info 
    230 #ifdef ZEND_ENGINE_2 
    231 DEF_STRUCT_P_FUNC(`zend_arg_info', , ` 
     224#ifdef ZEND_ENGINE_2 
     225DEF_STRUCT_P_FUNC(`zend_arg_info', , `dnl {{{ 
    232226    DISPATCH(zend_uint, name_len) 
    233227    PROC_ZSTRING_L(, name, name_len) 
     
    246240#endif 
    247241') 
    248 #endif 
    249 dnl }}} 
     242dnl }}} 
     243#endif 
    250244#ifdef HAVE_XCACHE_CONSTANT 
    251245DEF_STRUCT_P_FUNC(`zend_constant', , `dnl {{{ 
     
    281275') 
    282276dnl }}} 
    283 dnl {{{ zend_property_info 
    284 #ifdef ZEND_ENGINE_2 
    285 DEF_STRUCT_P_FUNC(`zend_property_info', , ` 
     277#ifdef ZEND_ENGINE_2 
     278DEF_STRUCT_P_FUNC(`zend_property_info', , `dnl {{{ 
    286279    DISPATCH(zend_uint, flags) 
    287280    DISPATCH(int, name_length) 
     
    300293#endif 
    301294') 
    302 #endif 
    303 dnl }}} 
     295dnl }}} 
     296#endif 
     297#ifdef ZEND_ENGINE_2_4 
     298DEF_STRUCT_P_FUNC(`zend_trait_method_reference', , `dnl {{{ 
     299    DISPATCH(unsigned int, mname_len) 
     300    PROC_STRING_L(method_name, mname_len) 
     301    COPYNULL(ce) 
     302    DISPATCH(unsigned int, cname_len) 
     303    PROC_STRING_L(class_name, cname_len) 
     304') 
     305dnl }}} 
     306DEF_STRUCT_P_FUNC(`zend_trait_alias', , `dnl {{{ 
     307    STRUCT_P(zend_trait_method_reference, trait_method) 
     308    DISPATCH(unsigned int, alias_len) 
     309    PROC_STRING_L(alias, alias_len) 
     310    DISPATCH(zend_uint, modifiers) 
     311    COPYNULL(function) 
     312') 
     313dnl }}} 
     314DEF_STRUCT_P_FUNC(`zend_trait_precedence', , `dnl {{{ 
     315    STRUCT_P(zend_trait_method_reference, trait_method) 
     316    COPYNULL(exclude_from_classes) 
     317    COPYNULL(function) 
     318') 
     319dnl }}} 
     320DEF_STRUCT_P_FUNC(`zend_trait_alias_ptr', , `dnl {{{ 
     321    IFDASM(` 
     322        pushdefFUNC_NAME(`zend_trait_alias') 
     323        FUNC_NAME (dst, src[0] TSRMLS_CC); 
     324        popdef(`FUNC_NAME') 
     325    ', ` 
     326        ALLOC(dst[0], zend_trait_alias) 
     327        STRUCT_P_EX(zend_trait_alias, dst[0], src[0], `[0]', `', ` ') 
     328        FIXPOINTER_EX(zend_trait_alias, dst[0]) 
     329    ') 
     330    DONE_SIZE(sizeof(zend_trait_alias)) 
     331') 
     332dnl }}} 
     333DEF_STRUCT_P_FUNC(`zend_trait_precedence_ptr', , `dnl {{{ 
     334    IFDASM(` 
     335        pushdefFUNC_NAME(`zend_trait_precedence') 
     336        FUNC_NAME (dst, src[0] TSRMLS_CC); 
     337        popdef(`FUNC_NAME') 
     338    ', ` 
     339        ALLOC(dst[0], zend_trait_precedence) 
     340        STRUCT_P_EX(zend_trait_precedence, dst[0], src[0], `[0]', `', ` ') 
     341        FIXPOINTER_EX(zend_trait_precedence, dst[0]) 
     342    ') 
     343    DONE_SIZE(sizeof(zend_trait_precedence)) 
     344') 
     345dnl }}} 
     346#endif 
    304347DEF_STRUCT_P_FUNC(`zend_class_entry', , `dnl {{{ 
    305348    IFCALCCOPY(` 
     
    359402    STRUCT(HashTable, constants_table, HashTable_zval_ptr) 
    360403 
     404#ifdef ZEND_ENGINE_2_2 
    361405    dnl runtime binding: ADD_INTERFACE will deal with it 
     406    COPYNULL(`interfaces') 
     407    COPYNULL(`num_interfaces') 
     408 
     409#   ifdef ZEND_ENGINE_2_4 
    362410    dnl runtime binding: ADD_TRAIT will deal with it 
     411    COPYNULL(traits) 
     412    COPYNULL(num_traits) 
     413#   endif 
     414#else 
    363415    IFRESTORE(` 
    364416        if (src->num_interfaces) { 
     
    369421            COPYNULL(`interfaces') 
    370422        } 
    371 #   ifdef ZEND_ENGINE_2_4 
    372         if (src->num_traits) { 
    373             CALLOC(dst->traits, zend_class_entry*, src->num_traits) 
    374             DONE(`traits') 
    375             DONE(`trait_aliases') 
    376             DONE(`trait_precedences') 
    377         } 
    378         else { 
    379             COPYNULL(`traits') 
    380             COPYNULL(`trait_aliases') 
    381             COPYNULL(`trait_precedences') 
    382         } 
    383 #   endif 
    384     ') 
    385     IFDASM(` 
    386         if (src->num_interfaces) { 
    387             /* 
    388             int i; 
    389             zval *arr; 
    390             ALLOC_INIT_ZVAL(arr); 
    391             array_init(arr); 
    392             for (i = 0; i < src->num_interfaces; i ++) { 
    393                 zval *zv; 
    394                 ALLOC_INIT_ZVAL(zv); 
    395                 ZVAL_STRING(src->num_interfaces); 
    396             } 
    397             add_assoc_zval_ex(dst, ZEND_STRS("interfaces"), arr); 
    398             */ 
    399             DONE(`interfaces') 
    400         } 
    401         else { 
    402             COPYNULL(`interfaces') 
    403         } 
    404 #   ifdef ZEND_ENGINE_2_4 
    405         if (src->num_traits) { 
    406             DONE(`traits') 
    407             DONE(`trait_aliases') 
    408             DONE(`trait_precedences') 
    409         } 
    410         else { 
    411             COPYNULL(`traits') 
    412             COPYNULL(`trait_aliases') 
    413             COPYNULL(`trait_precedences') 
    414         } 
    415 #   endif 
    416     ') 
    417     IFRESTORE(`', ` 
    418         IFDASM(`', ` 
    419             DONE(`interfaces') 
    420 #   ifdef ZEND_ENGINE_2_4 
    421             DONE(`traits') 
    422             DONE(`trait_aliases') 
    423             DONE(`trait_precedences') 
    424 #   endif 
    425         ') 
     423    ', ` 
     424        DONE(`interfaces') 
    426425    ') 
    427426    DISPATCH(zend_uint, num_interfaces) 
    428 #   ifdef ZEND_ENGINE_2_4 
    429     DISPATCH(zend_uint, num_traits) 
    430 #   endif 
     427#endif 
     428    STRUCT_ARRAY(, zend_trait_alias_ptr, trait_aliases) 
     429    STRUCT_ARRAY(, zend_trait_precedence_ptr, trait_precedences) 
    431430 
    432431#   ifdef ZEND_ENGINE_2_4 
     
    11391138') 
    11401139dnl }}} 
    1141 dnl {{{ xc_entry_t 
    1142 DEF_STRUCT_P_FUNC(`xc_entry_t', , ` 
     1140DEF_STRUCT_P_FUNC(`xc_entry_t', , `dnl {{{ 
    11431141    DISPATCH(xc_entry_type_t, type) 
    11441142    DISPATCH(size_t, size) 
Note: See TracChangeset for help on using the changeset viewer.