Changeset 843


Ignore:
Timestamp:
2012-03-25T09:01:16+02:00 (3 years ago)
Author:
moo
Message:

PHP_5_4: handle exclude_from_classes

Location:
trunk/processor
Files:
6 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/processor/hashtable.m4

    r824 r843  
    7878            IFRESTORE(`dst->canary = zend_hash_canary; DONE(canary)', `
    7979                dnl else
    80                 DISPATCH(unsigned int, canary)
     80                PROCESS(unsigned int, canary)
    8181            ')
    8282        ')
    8383#endif
    84         DISPATCH(uint, nTableSize)
    85         DISPATCH(uint, nTableMask)
    86         DISPATCH(uint, nNumOfElements)
    87         DISPATCH(ulong, nNextFreeElement)
     84        PROCESS(uint, nTableSize)
     85        PROCESS(uint, nTableMask)
     86        PROCESS(uint, nNumOfElements)
     87        PROCESS(ulong, nNextFreeElement)
    8888        IFCOPY(`dst->pInternalPointer = NULL;   /* Used for element traversal */') DONE(pInternalPointer)
    8989        IFCOPY(`dst->pListHead = NULL;') DONE(pListHead)
     
    165165        IFCOPY(`dst->pListTail = pnew;') DONE(pListTail)
    166166        IFCOPY(`dst->pDestructor = src->pDestructor;') DONE(pDestructor)
    167         DISPATCH(zend_bool, persistent)
     167        PROCESS(zend_bool, persistent)
    168168#ifdef IS_UNICODE
    169         DISPATCH(zend_bool, unicode)
     169        PROCESS(zend_bool, unicode)
    170170#endif
    171         DISPATCH(unsigned char, nApplyCount)
    172         DISPATCH(zend_bool, bApplyProtection)
     171        PROCESS(unsigned char, nApplyCount)
     172        PROCESS(zend_bool, bApplyProtection)
    173173#if ZEND_DEBUG
    174         DISPATCH(int, inconsistent)
     174        PROCESS(int, inconsistent)
    175175#endif
    176176        ')dnl IFDASM
  • trunk/processor/head.m4

    r838 r843  
    3737define(`SIZEOF_xc_entry_name_t', `sizeof(xc_entry_name_t)')
    3838define(`COUNTOF_xc_entry_name_t', `1')
     39define(`SIZEOF_xc_ztstring', `sizeof(xc_ztstring)')
     40define(`COUNTOF_xc_ztstring', `1')
    3941
    4042ifdef(`XCACHE_ENABLE_TEST', `
     
    5658typedef zval *zval_ptr;
    5759typedef zval *zval_ptr_nullable;
     60typedef char *xc_ztstring;
    5861#ifdef ZEND_ENGINE_2_4
    5962typedef zend_trait_alias *zend_trait_alias_ptr;
     
    6164#endif
    6265
    63 typedef zend_uchar zval_data_type;
     66typedef zend_uchar xc_zval_data_type;
     67typedef int xc_op_type;
     68typedef zend_uchar xc_opcode;
    6469#ifdef IS_UNICODE
    6570typedef UChar zstr_uchar;
  • trunk/processor/main.m4

    r837 r843  
    2020define(`ZEND_STRS', `($1), (sizeof($1))')
    2121define(`ZEND_STRL', `($1), (sizeof($1) - 1)')
     22define(`DST', `dst->$1')
     23define(`SRC', `src->$1')
    2224dnl ============
    2325define(`INDENT', `xc_dprint_indent(indent);')
     
    8183    popdef(`SIZE')
    8284')
    83 dnl CALLOC(1:dst, 2:type [, 3:count=1 ])
    84 define(`CALLOC', `ALLOC(`$1', `$2', `$3', `1')')
    85 dnl }}}
    86 dnl {{{ PROC_INT(1:elm, 2:format=%d, 3:type=, 4:spec=)
    87 define(`PROC_INT', `
    88     IFNOTMEMCPY(`IFCOPY(`dst->$1 = src->$1;')')
    89     IFDPRINT(`
    90         INDENT()
    91         ifelse(
    92             `$3 $1', `zval_data_type type', `fprintf(stderr, "$3:$1:\t%d %s\n", src->$1, xc_get_data_type(src->$1));'
    93         , `$3 $1', `int op_type', `fprintf(stderr, "$3:$1:\t%d %s\n", src->$1, xc_get_op_type(src->$1));'
    94         , `$3 $1', `zend_uchar opcode', `fprintf(stderr, "$3:$1:\t%d %s\n", src->$1, xc_get_opcode(src->$1));'
    95         , `', `', `fprintf(stderr, "$3:$1:\t%ifelse(`$2',`',`d',`$2')\n", src->$1);')
    96     ')
    97     IFDASM(`
    98         ifelse(
    99             `$3', `zend_bool', `add_assoc_bool_ex(dst, ZEND_STRS("$1"), src->$1 ? 1 : 0);'
    100         , `', `', `add_assoc_long_ex(dst, ZEND_STRS("$1"), src->$1);'
    101         )
    102     ')
    103     DONE(`$1')
    104 ')
     85dnl CALLOC(1:dst, 2:type [, 3:count=1, 4:forcetype=$2 ])
     86define(`CALLOC', `ALLOC(`$1', `$2', `$3', `1', `$4')')
    10587dnl }}}
    10688dnl {{{ PROC_CLASS_ENTRY_P(1:elm)
    107 define(`PROC_CLASS_ENTRY_P', `PROC_CLASS_ENTRY_P_EX(`dst->$1', `src->$1', `$1')`'DONE(`$1')')
     89define(`PROC_CLASS_ENTRY_P', `PROC_CLASS_ENTRY_P_EX(`dst->$1', `SRC(`$1')', `$1')`'DONE(`$1')')
    10890dnl PROC_CLASS_ENTRY_P_EX(1:dst, 2:src, 3:elm-name)
    10991define(`PROC_CLASS_ENTRY_P_EX', `
     
    151133dnl }}}
    152134dnl {{{ COPY
    153 define(`COPY', `IFNOTMEMCPY(`IFCOPY(`dst->$1 = src->$1;')')DONE(`$1')')
     135define(`COPY', `IFNOTMEMCPY(`IFCOPY(`dst->$1 = SRC(`$1');')')DONE(`$1')')
    154136dnl }}}
    155137dnl {{{ COPY_N_EX
    156138define(`COPY_N_EX', `
    157     ALLOC(`dst->$3', `$2', `src->$1')
     139    ALLOC(`dst->$3', `$2', `SRC(`$1')')
    158140    IFCOPY(`
    159         memcpy(dst->$3, src->$3, sizeof(dst->$3[0]) * src->$1);
     141        memcpy(dst->$3, SRC(`$3'), sizeof(dst->$3[0]) * SRC(`$1'));
    160142        ')
    161143')
     
    168150dnl }}}
    169151dnl {{{ COPYARRAY_EX
    170 define(`COPYARRAY_EX', `IFNOTMEMCPY(`IFCOPY(`memcpy(dst->$1, src->$1, sizeof(dst->$1));')')')
     152define(`COPYARRAY_EX', `IFNOTMEMCPY(`IFCOPY(`memcpy(dst->$1, SRC(`$1'), sizeof(dst->$1));')')')
    171153dnl }}}
    172154dnl {{{ COPYARRAY
     
    226208        }
    227209    ')
    228     DONE_SIZE(`sizeof(src->$1)')
     210    DONE_SIZE(`sizeof(SRC(`$1'))')
    229211')
    230212define(`DISABLECHECK', `
     
    261243include(srcdir`/processor/string.m4')
    262244include(srcdir`/processor/struct.m4')
    263 include(srcdir`/processor/dispatch.m4')
     245include(srcdir`/processor/process.m4')
    264246include(srcdir`/processor/head.m4')
    265247
  • trunk/processor/process.m4

    r840 r843  
    1 dnl DISPATCH(1:type, 2:elm)
    2 define(`DISPATCH', `
     1define(`PROCESS_SCALAR', `dnl {{{ (1:elm, 2:format=%d, 3:type=)
     2    IFNOTMEMCPY(`IFCOPY(`DST(`$1') = SRC(`$1');')')
     3    IFDPRINT(`
     4        INDENT()
     5        fprintf(stderr, "$3:$1:\t%ifelse(`$2',`',`d',`$2')\n", SRC(`$1'));
     6    ')
     7    IFDASM(`
     8        ifelse(
     9            `$3', `zend_bool', `add_assoc_bool_ex(dst, ZEND_STRS("$1"), SRC(`$1') ? 1 : 0);'
     10        , `', `', `add_assoc_long_ex(dst, ZEND_STRS("$1"), SRC(`$1'));'
     11        )
     12    ')
     13    DONE(`$1')
     14')
     15dnl }}}
     16define(`PROCESS_xc_ztstring', `dnl {{{ (1:elm)
     17    PROC_STRING(`$1')
     18')
     19dnl }}}
     20define(`PROCESS_zval_data_type', `dnl {{{ (1:elm)
     21    IFDPRINT(`
     22        INDENT()
     23        fprintf(stderr, ":$1:\t%d %s\n", SRC(`$1'), xc_get_data_type(SRC(`$1')));
     24        DONE(`$1')
     25    ', `PROCESS_SCALAR(`$1')')
     26')
     27dnl }}}
     28define(`PROCESS_op_type', `dnl {{{ (1:elm)
     29    IFDPRINT(`
     30        INDENT()
     31        fprintf(stderr, ":$1:\t%d %s\n", SRC(`$1'), xc_get_op_type(SRC(`$1')));
     32        DONE(`$1')
     33    ', `PROCESS_SCALAR(`$1')')
     34')
     35dnl }}}
     36define(`PROCESS_opcode', `dnl {{{ (1:elm)
     37    IFDPRINT(`
     38        INDENT()
     39        fprintf(stderr, ":$1:\t%u %s\n", SRC(`$1'), xc_get_opcode(SRC(`$1')));
     40        DONE(`$1')
     41    ', `PROCESS_SCALAR(`$1')')
     42')
     43dnl }}}
     44define(`PROCESS', `dnl PROCESS(1:type, 2:elm)
    345    DBG(`$0($*)')
    4     assert(sizeof($1) == sizeof(src->$2));
     46    assert(sizeof($1) == sizeof(SRC(`$2')));
    547    ifelse(
    6         `$1', `zend_bool',        `PROC_INT(`$2', `u',  `$1')'
    7     , `$1', `zend_uchar',       `PROC_INT(`$2', `u',  `$1')'
    8     , `$1', `char',             `PROC_INT(`$2', `d',  `$1')'
    9     , `$1', `int32_t',          `PROC_INT(`$2', `d',  `$1')'
    10     , `$1', `unsigned char',    `PROC_INT(`$2', `u',  `$1')'
    11     , `$1', `zend_uint',        `PROC_INT(`$2', `u',  `$1')'
    12     , `$1', `uint',             `PROC_INT(`$2', `u',  `$1')'
    13     , `$1', `unsigned int',     `PROC_INT(`$2', `u',  `$1')'
    14     , `$1', `zend_ulong',       `PROC_INT(`$2', `lu', `$1')'
    15     , `$1', `ulong',            `PROC_INT(`$2', `lu', `$1')'
    16     , `$1', `size_t',           `PROC_INT(`$2', `u', `$1')'
    17     , `$1', `long',             `PROC_INT(`$2', `ld', `$1')'
    18     , `$1', `time_t',           `PROC_INT(`$2', `ld', `$1')'
    19     , `$1', `zend_ushort',      `PROC_INT(`$2', `hu', `$1')'
    20     , `$1', `int',              `PROC_INT(`$2', `d',  `$1')'
    21     , `$1', `double',           `PROC_INT(`$2', `f',  `$1')'
    22     , `$1', `opcode_handler_t', `/* is copying enough? */COPY(`$2')'
    23     , `$1', `zval_data_type',   `PROC_INT(`$2', `u',  `$1')'
    24     , `$1', `xc_entry_type_t',  `PROC_INT(`$2', `d',  `$1')'
    25     , `$1', `xc_hash_value_t',  `PROC_INT(`$2', `lu', `$1')'
    26     , `$1', `xc_md5sum_t',      `COPY(`$2')'
    27     , `', `', `m4_errprint(`Unknown type "$1"')'
     48        `$1', `zend_bool',        `PROCESS_SCALAR(`$2', `u',  `$1')'
     49    , `$1', `zend_uchar',       `PROCESS_SCALAR(`$2', `u',  `$1')'
     50    , `$1', `char',             `PROCESS_SCALAR(`$2', `d',  `$1')'
     51    , `$1', `int32_t',          `PROCESS_SCALAR(`$2', `d',  `$1')'
     52    , `$1', `unsigned char',    `PROCESS_SCALAR(`$2', `u',  `$1')'
     53    , `$1', `zend_uint',        `PROCESS_SCALAR(`$2', `u',  `$1')'
     54    , `$1', `uint',             `PROCESS_SCALAR(`$2', `u',  `$1')'
     55    , `$1', `unsigned int',     `PROCESS_SCALAR(`$2', `u',  `$1')'
     56    , `$1', `zend_ulong',       `PROCESS_SCALAR(`$2', `lu', `$1')'
     57    , `$1', `ulong',            `PROCESS_SCALAR(`$2', `lu', `$1')'
     58    , `$1', `size_t',           `PROCESS_SCALAR(`$2', `u', `$1')'
     59    , `$1', `long',             `PROCESS_SCALAR(`$2', `ld', `$1')'
     60    , `$1', `time_t',           `PROCESS_SCALAR(`$2', `ld', `$1')'
     61    , `$1', `zend_ushort',      `PROCESS_SCALAR(`$2', `hu', `$1')'
     62    , `$1', `int',              `PROCESS_SCALAR(`$2', `d',  `$1')'
     63    , `$1', `double',           `PROCESS_SCALAR(`$2', `f',  `$1')'
     64    , `$1', `xc_entry_type_t',  `PROCESS_SCALAR(`$2', `d',  `$1')'
     65    , `$1', `xc_hash_value_t',  `PROCESS_SCALAR(`$2', `lu', `$1')'
     66
     67    , `$1', `xc_ztstring',       `PROCESS_xc_ztstring(`$2')'
     68    , `$1', `xc_zval_data_type', `PROCESS_zval_data_type(`$2')'
     69    , `$1', `xc_op_type',        `PROCESS_op_type(`$2')'
     70    , `$1', `xc_opcode',         `PROCESS_opcode(`$2')'
     71    , `$1', `opcode_handler_t',  `/* is copying enough? */COPY(`$2')'
     72    , `$1', `xc_md5sum_t',       `COPY(`$2')'
     73    , `', `', `m4_errprint(`AUTOCHECK ERROR: Unknown type "$1"')define(`EXIT_PENDING', 1)'
    2874    )
    2975')
    30 dnl {{{ DISPATCH_ARRAY(1:count, 2:type, 3:elm)
    31 define(`DISPATCH_ARRAY', `
     76define(`PROCESS_ARRAY', `dnl {{{ (1:count, 2:type, 3:elm, [4:force_type])
    3277    if (src->$3) {
    33         int i;
     78        int LOOPCOUNTER;
    3479        IFDASM(`
    3580            zval *arr;
    3681            ALLOC_INIT_ZVAL(arr);
    3782            array_init(arr);
    38             for (i = 0; i < src->$1; i ++) {
    39                 ifelse(
    40                     `$2', `zend_bool', `add_assoc_bool_ex(arr, ZEND_STRS("$3"), src->$3[i] ? 1 : 0);'
    41                 , `', `', `add_next_index_long(arr, src->$3[i]);')
     83
     84            for (LOOPCOUNTER = 0;
     85                    ifelse(`$1', `', `src->$3[LOOPCOUNTER]',
     86                    `', `', `LOOPCOUNTER < SRC(`$1')');
     87                    ++LOOPCOUNTER) {
     88                pushdef(`dst', `arr')
     89                pushdef(`SRC', defn(`SRC') `[LOOPCOUNTER]')
     90                popdef(`add_assoc_bool_ex', `add_next_index_bool($1, $3)')
     91                popdef(`add_assoc_string_ex', `add_next_index_string($1, $3)')
     92                popdef(`add_assoc_long_ex', `add_next_index_long($1, $3)')
     93                popdef(`add_assoc_zval_ex', `add_next_index_zval($1, $3)')
     94                DISABLECHECK(`
     95                    PROCESS(`$2', `$3')
     96                ')
     97                popdef(`add_assoc_zval_ex')
     98                popdef(`add_assoc_long_ex')
     99                popdef(`add_assoc_string_ex')
     100                popdef(`add_assoc_bool_ex')
     101                popdef(`SRC')
     102                popdef(`dst')
     103
     104                ++LOOPCOUNTER;
    42105            }
    43106            add_assoc_zval_ex(dst, ZEND_STRS("$3"), arr);
    44107        ', `
    45             COPY_N_EX($@)
    46             for (i = 0; i < src->$1; i ++) {
     108            dnl find count with NULL
     109            ifelse(`$1', `', `
     110                size_t count = 0;
     111                while (SRC(`$3[count]')) {
     112                    ++count;
     113                }
     114                ++count;
     115                pushdef(`STRUCT_COUNT', `count')
     116            ',
     117            `', `', `pushdef(`STRUCT_COUNT', `SRC(`$1')')')
     118            ALLOC(`dst->$3', `$2', `STRUCT_COUNT', , `$4')
     119            popdef(`STRUCT_COUNT')
     120
     121            for (LOOPCOUNTER = 0;
     122                    ifelse(`$1', `', `src->$3[LOOPCOUNTER]',
     123                    `', `', `LOOPCOUNTER < SRC(`$1')');
     124                    ++LOOPCOUNTER) {
    47125                DISABLECHECK(`
    48                     DISPATCH(`$2', `$3[i]', `$4')
     126                    pushdef(`DST', defn(`DST') `[LOOPCOUNTER]')
     127                    pushdef(`SRC', ((const char **) defn(`SRC'))`[LOOPCOUNTER]')
     128                    PROCESS(`$2', `$3')
     129                    popdef(`SRC')
     130                    popdef(`DST')
    49131                ')
    50132            }
     133            dnl the end marker
     134            ifelse(`$1', `', `IFCOPY(`DST(`$3[LOOPCOUNTER]') = NULL;')')
    51135        ')dnl IFDASM
    52136        DONE(`$3')
  • trunk/processor/processor.m4

    r841 r843  
    1818#ifdef IS_CV
    1919DEF_STRUCT_P_FUNC(`zend_compiled_variable', , `dnl {{{
    20     DISPATCH(int, name_len)
     20    PROCESS(int, name_len)
    2121    PROC_ZSTRING_L(, name, name_len)
    22     DISPATCH(ulong, hash_value)
     22    PROCESS(ulong, hash_value)
    2323')
    2424dnl }}}
     
    4646#ifdef ZEND_ENGINE_2
    4747DEF_STRUCT_P_FUNC(`zend_try_catch_element', , `dnl {{{
    48     DISPATCH(zend_uint, try_op)
    49     DISPATCH(zend_uint, catch_op)
     48    PROCESS(zend_uint, try_op)
     49    PROCESS(zend_uint, catch_op)
    5050')
    5151dnl }}}
     
    5353DEF_STRUCT_P_FUNC(`zend_brk_cont_element', , `dnl {{{
    5454#ifdef ZEND_ENGINE_2_2
    55     DISPATCH(int, start)
    56 #endif
    57     DISPATCH(int, cont)
    58     DISPATCH(int, brk)
    59     DISPATCH(int, parent)
     55    PROCESS(int, start)
     56#endif
     57    PROCESS(int, cont)
     58    PROCESS(int, brk)
     59    PROCESS(int, parent)
    6060')
    6161dnl }}}
     
    9191            case IS_RESOURCE:
    9292            case IS_BOOL:
    93                 DISPATCH(long, value.lval)
     93                PROCESS(long, value.lval)
    9494                break;
    9595            case IS_DOUBLE:
    96                 DISPATCH(double, value.dval)
     96                PROCESS(double, value.dval)
    9797                break;
    9898            case IS_NULL:
     
    110110            case FLAG_IS_BC:
    111111#endif
    112                 DISPATCH(int, value.str.len)
     112                PROCESS(int, value.str.len)
    113113                PROC_STRING_L(value.str.val, value.str.len)
    114114                break;
     
    116116            case IS_UNICODE:
    117117proc_unicode:
    118                 DISPATCH(int32_t, value.uni.len)
     118                PROCESS(int32_t, value.uni.len)
    119119                PROC_ZSTRING_L(1, value.uni.val, value.uni.len)
    120120                break;
     
    141141dnl }}}
    142142        DONE(value)
    143         DISPATCH(zval_data_type, type)
     143        PROCESS(xc_zval_data_type, type)
    144144#ifdef ZEND_ENGINE_2_3
    145         DISPATCH(zend_uchar, is_ref__gc)
    146 #else
    147         DISPATCH(zend_uchar, is_ref)
     145        PROCESS(zend_uchar, is_ref__gc)
     146#else
     147        PROCESS(zend_uchar, is_ref)
    148148#endif
    149149
    150150#ifdef ZEND_ENGINE_2_3
    151         DISPATCH(zend_uint, refcount__gc)
     151        PROCESS(zend_uint, refcount__gc)
    152152#elif defined(ZEND_ENGINE_2)
    153         DISPATCH(zend_uint, refcount)
    154 #else
    155         DISPATCH(zend_ushort, refcount)
     153        PROCESS(zend_uint, refcount)
     154#else
     155        PROCESS(zend_ushort, refcount)
    156156#endif
    157157    ')dnl IFDASM
     
    224224#ifdef ZEND_ENGINE_2
    225225DEF_STRUCT_P_FUNC(`zend_arg_info', , `dnl {{{
    226     DISPATCH(zend_uint, name_len)
     226    PROCESS(zend_uint, name_len)
    227227    PROC_ZSTRING_L(, name, name_len)
    228     DISPATCH(zend_uint, class_name_len)
     228    PROCESS(zend_uint, class_name_len)
    229229    PROC_ZSTRING_L(, class_name, class_name_len)
    230230#ifdef ZEND_ENGINE_2_4
    231     DISPATCH(zend_uchar, type_hint)
    232 #else
    233     DISPATCH(zend_bool, array_type_hint)
    234 #endif
    235     DISPATCH(zend_bool, allow_null)
    236     DISPATCH(zend_bool, pass_by_reference)
     231    PROCESS(zend_uchar, type_hint)
     232#else
     233    PROCESS(zend_bool, array_type_hint)
     234#endif
     235    PROCESS(zend_bool, allow_null)
     236    PROCESS(zend_bool, pass_by_reference)
    237237#ifndef ZEND_ENGINE_2_4
    238     DISPATCH(zend_bool, return_reference)
    239     DISPATCH(int, required_num_args)
     238    PROCESS(zend_bool, return_reference)
     239    PROCESS(int, required_num_args)
    240240#endif
    241241')
     
    245245DEF_STRUCT_P_FUNC(`zend_constant', , `dnl {{{
    246246    STRUCT(zval, value)
    247     DISPATCH(int, flags)
    248     DISPATCH(uint, name_len)
     247    PROCESS(int, flags)
     248    PROCESS(uint, name_len)
    249249    pushdef(`estrndup', `zend_strndup')
    250250    PROC_ZSTRING_N(, name, name_len)
    251251    popdef(`estrndup')
    252     DISPATCH(int, module_number)
     252    PROCESS(int, module_number)
    253253')
    254254dnl }}}
     
    277277#ifdef ZEND_ENGINE_2
    278278DEF_STRUCT_P_FUNC(`zend_property_info', , `dnl {{{
    279     DISPATCH(zend_uint, flags)
    280     DISPATCH(int, name_length)
     279    PROCESS(zend_uint, flags)
     280    PROCESS(int, name_length)
    281281    PROC_ZSTRING_L(, name, name_length)
    282     DISPATCH(ulong, h)
    283 #ifdef ZEND_ENGINE_2_4
    284     DISPATCH(int, offset)
     282    PROCESS(ulong, h)
     283#ifdef ZEND_ENGINE_2_4
     284    PROCESS(int, offset)
    285285#endif
    286286#ifdef ZEND_ENGINE_2_1
    287     DISPATCH(int, doc_comment_len)
     287    PROCESS(int, doc_comment_len)
    288288    PROC_ZSTRING_L(, doc_comment, doc_comment_len)
    289289#endif
     
    297297#ifdef ZEND_ENGINE_2_4
    298298DEF_STRUCT_P_FUNC(`zend_trait_method_reference', , `dnl {{{
    299     DISPATCH(unsigned int, mname_len)
     299    PROCESS(unsigned int, mname_len)
    300300    PROC_STRING_L(method_name, mname_len)
    301301    COPYNULL(ce)
    302     DISPATCH(unsigned int, cname_len)
     302    PROCESS(unsigned int, cname_len)
    303303    PROC_STRING_L(class_name, cname_len)
    304304')
     
    306306DEF_STRUCT_P_FUNC(`zend_trait_alias', , `dnl {{{
    307307    STRUCT_P(zend_trait_method_reference, trait_method)
    308     DISPATCH(unsigned int, alias_len)
     308    PROCESS(unsigned int, alias_len)
    309309    PROC_STRING_L(alias, alias_len)
    310     DISPATCH(zend_uint, modifiers)
     310    PROCESS(zend_uint, modifiers)
    311311    COPYNULL(function)
    312312')
     
    314314DEF_STRUCT_P_FUNC(`zend_trait_precedence', , `dnl {{{
    315315    STRUCT_P(zend_trait_method_reference, trait_method)
    316     dnl TODO
    317     STRUCT_ARRAY(, xc_class_name_t, exclude_from_classes)
     316    PROCESS_ARRAY(, xc_ztstring, exclude_from_classes, zend_class_entry*)
    318317    COPYNULL(function)
    319318')
     
    351350        IFCOPY(`processor->active_class_entry_dst = dst;')
    352351    ')
    353     DISPATCH(char, type)
    354     DISPATCH(zend_uint, name_length)
     352    PROCESS(char, type)
     353    PROCESS(zend_uint, name_length)
    355354    PROC_ZSTRING_L(, name, name_length)
    356355    IFRESTORE(`
     
    365364    ')
    366365#ifdef ZEND_ENGINE_2
    367     DISPATCH(int, refcount)
     366    PROCESS(int, refcount)
    368367#else
    369368    STRUCT_P(int, refcount)
    370369#endif
    371370#ifndef ZEND_ENGINE_2_4
    372     DISPATCH(zend_bool, constants_updated)
    373 #endif
    374 #ifdef ZEND_ENGINE_2
    375     DISPATCH(zend_uint, ce_flags)
     371    PROCESS(zend_bool, constants_updated)
     372#endif
     373#ifdef ZEND_ENGINE_2
     374    PROCESS(zend_uint, ce_flags)
    376375#endif
    377376
     
    382381#ifdef ZEND_ENGINE_2_4
    383382    STRUCT_ARRAY(default_properties_count, zval_ptr_nullable, default_properties_table)
    384     DISPATCH(int, default_properties_count)
     383    PROCESS(int, default_properties_count)
    385384    STRUCT_ARRAY(default_static_members_count, zval_ptr_nullable, default_static_members_table)
    386     DISPATCH(int, default_static_members_count)
     385    PROCESS(int, default_static_members_count)
    387386    IFCOPY(`dst->static_members_table = dst->default_static_members_table;')
    388387    DONE(static_members_table)
     
    425424        DONE(`interfaces')
    426425    ')
    427     DISPATCH(zend_uint, num_interfaces)
     426    PROCESS(zend_uint, num_interfaces)
    428427#endif
    429428    STRUCT_ARRAY(, zend_trait_alias_ptr, trait_aliases)
     
    433432    DISABLECHECK(`
    434433    IFRESTORE(`dst->info.user.filename = processor->entry_src->filepath;', `PROC_STRING(info.user.filename)')
    435     DISPATCH(zend_uint, info.user.line_start)
    436     DISPATCH(zend_uint, info.user.line_end)
    437     DISPATCH(zend_uint, info.user.doc_comment_len)
     434    PROCESS(zend_uint, info.user.line_start)
     435    PROCESS(zend_uint, info.user.line_end)
     436    PROCESS(zend_uint, info.user.doc_comment_len)
    438437    PROC_ZSTRING_L(, info.user.doc_comment, info.user.doc_comment_len)
    439438    ')
     
    441440#   else
    442441    IFRESTORE(`dst->filename = processor->entry_src->filepath;DONE(filename)', `PROC_STRING(filename)')
    443     DISPATCH(zend_uint, line_start)
    444     DISPATCH(zend_uint, line_end)
     442    PROCESS(zend_uint, line_start)
     443    PROCESS(zend_uint, line_end)
    445444#       ifdef ZEND_ENGINE_2_1
    446     DISPATCH(zend_uint, doc_comment_len)
     445    PROCESS(zend_uint, doc_comment_len)
    447446    PROC_ZSTRING_L(, doc_comment, doc_comment_len)
    448447#       endif
     
    519518        case IS_CONST:
    520519            ifelse($1, `result', `
    521                 DISPATCH(zend_uint, $1.constant)
     520                PROCESS(zend_uint, $1.constant)
    522521            ', `
    523522                IFDASM(`{
     
    532531                        dst->$1 = src->$1;
    533532                    ', `
    534                         DISPATCH(zend_uint, $1.constant)
     533                        PROCESS(zend_uint, $1.constant)
    535534                    ')
    536535                ')
     
    546545        case IS_TMP_VAR:
    547546        case IS_CV:
    548             DISPATCH(zend_uint, $1.var)
     547            PROCESS(zend_uint, $1.var)
    549548            break;
    550549        case IS_UNUSED:
    551             IFDASM(`DISPATCH(zend_uint, $1.var)')
    552             DISPATCH(zend_uint, $1.opline_num)
     550            IFDASM(`PROCESS(zend_uint, $1.var)')
     551            PROCESS(zend_uint, $1.opline_num)
    553552            break;
    554553        ')
     
    560559#else
    561560DEF_STRUCT_P_FUNC(`znode', , `dnl {{{
    562     DISPATCH(int, op_type)
     561    PROCESS(xc_op_type, op_type)
    563562
    564563#ifdef IS_CV
     
    588587        case IS_TMP_VAR:
    589588        case XCACHE_IS_CV:
    590             DISPATCH(zend_uint, u.var)
    591             DISPATCH(zend_uint, u.EA.type)
     589            PROCESS(zend_uint, u.var)
     590            PROCESS(zend_uint, u.EA.type)
    592591            break;
    593592        case IS_UNUSED:
    594             IFDASM(`DISPATCH(zend_uint, u.var)')
    595             DISPATCH(zend_uint, u.opline_num)
     593            IFDASM(`PROCESS(zend_uint, u.var)')
     594            PROCESS(zend_uint, u.opline_num)
    596595#ifndef ZEND_ENGINE_2
    597             DISPATCH(zend_uint, u.fetch_type)
    598 #endif
    599             DISPATCH(zend_uint, u.EA.type)
     596            PROCESS(zend_uint, u.fetch_type)
     597#endif
     598            PROCESS(zend_uint, u.EA.type)
    600599            break;
    601600        ')
     
    611610#endif
    612611DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{
    613     DISPATCH(zend_uchar, opcode)
     612    PROCESS(xc_opcode, opcode)
    614613#ifdef ZEND_ENGINE_2_4
    615614    IFRESTORE(`', `
     
    628627    STRUCT(znode, op2)
    629628#endif
    630     DISPATCH(ulong, extended_value)
    631     DISPATCH(uint, lineno)
     629    PROCESS(ulong, extended_value)
     630    PROCESS(uint, lineno)
    632631#ifdef ZEND_ENGINE_2_1
    633632#ifdef ZEND_ENGINE_2_4
    634     DISPATCH(zend_uchar, op1_type)
    635     DISPATCH(zend_uchar, op2_type)
    636     DISPATCH(zend_uchar, result_type)
     633    PROCESS(zend_uchar, op1_type)
     634    PROCESS(zend_uchar, op2_type)
     635    PROCESS(zend_uchar, result_type)
    637636#endif
    638637    IFCOPY(`
     
    674673        }
    675674    ')
    676     DISPATCH(opcode_handler_t, handler)
     675    PROCESS(opcode_handler_t, handler)
    677676#endif
    678677')
     
    681680DEF_STRUCT_P_FUNC(`zend_literal', , `dnl {{{
    682681    STRUCT(zval, constant)
    683     DISPATCH(zend_ulong, hash_value)
    684     DISPATCH(zend_uint,  cache_slot)
     682    PROCESS(zend_ulong, hash_value)
     683    PROCESS(zend_uint,  cache_slot)
    685684')
    686685dnl }}}
     
    777776
    778777    /* Common elements */
    779     DISPATCH(zend_uchar, type)
     778    PROCESS(zend_uchar, type)
    780779    PROC_ZSTRING(, function_name)
    781780#ifdef ZEND_ENGINE_2
    782     DISPATCH(zend_uint, fn_flags)
     781    PROCESS(zend_uint, fn_flags)
    783782    STRUCT_ARRAY(num_args, zend_arg_info, arg_info)
    784     DISPATCH(zend_uint, num_args)
    785     DISPATCH(zend_uint, required_num_args)
     783    PROCESS(zend_uint, num_args)
     784    PROCESS(zend_uint, required_num_args)
    786785#   ifndef ZEND_ENGINE_2_4
    787     DISPATCH(zend_bool, pass_rest_by_reference)
     786    PROCESS(zend_bool, pass_rest_by_reference)
    788787#   endif
    789788#else
     
    808807#endif
    809808#ifndef ZEND_ENGINE_2_4
    810     DISPATCH(unsigned char, return_reference)
     809    PROCESS(unsigned char, return_reference)
    811810#endif
    812811    /* END of common elements */
     
    822821    dnl before copying opcodes
    823822    STRUCT_ARRAY(last_literal, zend_literal, literals)
    824     DISPATCH(int, last_literal)
     823    PROCESS(int, last_literal)
    825824#endif
    826825
     
    835834    STRUCT_ARRAY(last, zend_op, opcodes)
    836835    popdef(`AFTER_ALLOC')
    837     DISPATCH(zend_uint, last)
     836    PROCESS(zend_uint, last)
    838837#ifndef ZEND_ENGINE_2_4
    839     IFCOPY(`dst->size = src->last;DONE(size)', `DISPATCH(zend_uint, size)')
     838    IFCOPY(`dst->size = src->last;DONE(size)', `PROCESS(zend_uint, size)')
    840839#endif
    841840
    842841#ifdef IS_CV
    843842    STRUCT_ARRAY(last_var, zend_compiled_variable, vars)
    844     DISPATCH(int, last_var)
     843    PROCESS(int, last_var)
    845844#   ifndef ZEND_ENGINE_2_4
    846     IFCOPY(`dst->size_var = src->last_var;DONE(size_var)', `DISPATCH(zend_uint, size_var)')
     845    IFCOPY(`dst->size_var = src->last_var;DONE(size_var)', `PROCESS(zend_uint, size_var)')
    847846#   endif
    848847#else
     
    853852#endif
    854853
    855     DISPATCH(zend_uint, T)
     854    PROCESS(zend_uint, T)
    856855
    857856    STRUCT_ARRAY(last_brk_cont, zend_brk_cont_element, brk_cont_array)
    858     DISPATCH(zend_uint, last_brk_cont)
     857    PROCESS(zend_uint, last_brk_cont)
    859858#ifndef ZEND_ENGINE_2_4
    860     DISPATCH(zend_uint, current_brk_cont)
     859    PROCESS(zend_uint, current_brk_cont)
    861860#endif
    862861#ifndef ZEND_ENGINE_2
    863     DISPATCH(zend_bool, uses_globals)
     862    PROCESS(zend_bool, uses_globals)
    864863#endif
    865864
    866865#ifdef ZEND_ENGINE_2
    867866    STRUCT_ARRAY(last_try_catch, zend_try_catch_element, try_catch_array)
    868     DISPATCH(int, last_try_catch)
     867    PROCESS(int, last_try_catch)
    869868#endif
    870869
     
    873872#ifndef ZEND_ENGINE_2_4
    874873    COPY(start_op)
    875     DISPATCH(int, backpatch_count)
     874    PROCESS(int, backpatch_count)
    876875#endif
    877876#ifdef ZEND_ENGINE_2_3
    878     DISPATCH(zend_uint, this_var)
     877    PROCESS(zend_uint, this_var)
    879878#endif
    880879
    881880#ifndef ZEND_ENGINE_2_4
    882     DISPATCH(zend_bool, done_pass_two)
     881    PROCESS(zend_bool, done_pass_two)
    883882#endif
    884883    /* 5.0 <= ver < 5.3 */
    885884#if defined(ZEND_ENGINE_2) && !defined(ZEND_ENGINE_2_3)
    886     DISPATCH(zend_bool, uses_this)
     885    PROCESS(zend_bool, uses_this)
    887886#endif
    888887
     
    896895#endif
    897896#ifdef ZEND_ENGINE_2
    898     DISPATCH(zend_uint, line_start)
    899     DISPATCH(zend_uint, line_end)
    900     DISPATCH(int, doc_comment_len)
     897    PROCESS(zend_uint, line_start)
     898    PROCESS(zend_uint, line_end)
     899    PROCESS(int, doc_comment_len)
    901900    PROC_ZSTRING_L(, doc_comment, doc_comment_len)
    902901#endif
    903902#ifdef ZEND_COMPILE_DELAYED_BINDING
    904     DISPATCH(zend_uint, early_binding);
     903    PROCESS(zend_uint, early_binding);
    905904#endif
    906905
     
    908907    DONE(reserved)
    909908#if defined(HARDENING_PATCH) && HARDENING_PATCH
    910     DISPATCH(zend_bool, created_by_eval)
     909    PROCESS(zend_bool, created_by_eval)
    911910#endif
    912911#ifdef ZEND_ENGINE_2_4
    913912    SETNULL(run_time_cache)
    914     DISPATCH(int, last_cache_slot)
     913    PROCESS(int, last_cache_slot)
    915914#endif
    916915    } while (0);
     
    967966#ifdef HAVE_XCACHE_CONSTANT
    968967DEF_STRUCT_P_FUNC(`xc_constinfo_t', , `dnl {{{
    969     DISPATCH(zend_uint, key_size)
     968    PROCESS(zend_uint, key_size)
    970969#ifdef IS_UNICODE
    971     DISPATCH(zend_uchar, type)
     970    PROCESS(zend_uchar, type)
    972971#endif
    973972    IFRESTORE(`COPY(key)', `
    974973        PROC_ZSTRING_N(type, key, key_size)
    975974    ')
    976     DISPATCH(ulong, h)
     975    PROCESS(ulong, h)
    977976    STRUCT(zend_constant, constant)
    978977')
     
    980979#endif
    981980DEF_STRUCT_P_FUNC(`xc_op_array_info_detail_t', , `dnl {{{
    982     DISPATCH(zend_uint, index)
    983     DISPATCH(zend_uint, info)
     981    PROCESS(zend_uint, index)
     982    PROCESS(zend_uint, info)
    984983')
    985984dnl }}}
    986985DEF_STRUCT_P_FUNC(`xc_op_array_info_t', , `dnl {{{
    987986#ifdef ZEND_ENGINE_2_4
    988     DISPATCH(zend_uint, literalinfo_cnt)
     987    PROCESS(zend_uint, literalinfo_cnt)
    989988    STRUCT_ARRAY(literalinfo_cnt, xc_op_array_info_detail_t, literalinfos)
    990989#else
    991     DISPATCH(zend_uint, oplineinfo_cnt)
     990    PROCESS(zend_uint, oplineinfo_cnt)
    992991    STRUCT_ARRAY(oplineinfo_cnt, xc_op_array_info_detail_t, oplineinfos)
    993992#endif
     
    995994dnl }}}
    996995DEF_STRUCT_P_FUNC(`xc_funcinfo_t', , `dnl {{{
    997     DISPATCH(zend_uint, key_size)
     996    PROCESS(zend_uint, key_size)
    998997#ifdef IS_UNICODE
    999     DISPATCH(zend_uchar, type)
     998    PROCESS(zend_uchar, type)
    1000999#endif
    10011000    IFRESTORE(`COPY(key)', `
    10021001        PROC_ZSTRING_N(type, key, key_size)
    10031002    ')
    1004     DISPATCH(ulong, h)
     1003    PROCESS(ulong, h)
    10051004    IFRESTORE(`COPY(op_array_info)', `
    10061005        STRUCT(xc_op_array_info_t, op_array_info)
     
    10141013dnl }}}
    10151014DEF_STRUCT_P_FUNC(`xc_classinfo_t', , `dnl {{{
    1016     DISPATCH(zend_uint, key_size)
     1015    PROCESS(zend_uint, key_size)
    10171016#ifdef IS_UNICODE
    1018     DISPATCH(zend_uchar, type)
     1017    PROCESS(zend_uchar, type)
    10191018#endif
    10201019    IFRESTORE(`COPY(key)', `
    10211020        PROC_ZSTRING_N(type, key, key_size)
    10221021    ')
    1023     DISPATCH(ulong, h)
    1024     DISPATCH(zend_uint, methodinfo_cnt)
     1022    PROCESS(ulong, h)
     1023    PROCESS(zend_uint, methodinfo_cnt)
    10251024    IFRESTORE(`COPY(methodinfos)', `
    10261025        STRUCT_ARRAY(methodinfo_cnt, xc_op_array_info_t, methodinfos)
     
    10361035#endif
    10371036#ifndef ZEND_COMPILE_DELAYED_BINDING
    1038     DISPATCH(int, oplineno)
     1037    PROCESS(int, oplineno)
    10391038#endif
    10401039')
     
    10421041#ifdef ZEND_ENGINE_2_1
    10431042DEF_STRUCT_P_FUNC(`xc_autoglobal_t', , `dnl {{{
    1044     DISPATCH(zend_uint, key_len)
     1043    PROCESS(zend_uint, key_len)
    10451044#ifdef IS_UNICODE
    1046     DISPATCH(zend_uchar, type)
     1045    PROCESS(zend_uchar, type)
    10471046#endif
    10481047    IFRESTORE(`COPY(key)', `
    10491048        PROC_ZSTRING_L(type, key, key_len)
    10501049    ')
    1051     DISPATCH(ulong, h)
     1050    PROCESS(ulong, h)
    10521051')
    10531052dnl }}}
     
    10551054#ifdef E_STRICT
    10561055DEF_STRUCT_P_FUNC(`xc_compilererror_t', , `dnl {{{
    1057     DISPATCH(int, type)
    1058     DISPATCH(uint, lineno)
    1059     DISPATCH(int, error_len)
     1056    PROCESS(int, type)
     1057    PROCESS(uint, lineno)
     1058    PROCESS(int, error_len)
    10601059    PROC_STRING_L(error, error_len)
    10611060')
     
    10681067    ')
    10691068
    1070     DISPATCH(xc_hash_value_t, hvalue)
     1069    PROCESS(xc_hash_value_t, hvalue)
    10711070    /* skip */
    10721071    DONE(next)
    10731072    COPY(cache)
    1074     DISPATCH(xc_md5sum_t, md5)
    1075     DISPATCH(zend_ulong, refcount)
    1076 
    1077     DISPATCH(size_t, sourcesize)
    1078     DISPATCH(zend_ulong, hits)
    1079     DISPATCH(size_t, size)
     1073    PROCESS(xc_md5sum_t, md5)
     1074    PROCESS(zend_ulong, refcount)
     1075
     1076    PROCESS(size_t, sourcesize)
     1077    PROCESS(zend_ulong, hits)
     1078    PROCESS(size_t, size)
    10801079
    10811080    IFRESTORE(`COPY(op_array_info)', `
     
    10891088
    10901089#ifdef HAVE_XCACHE_CONSTANT
    1091     DISPATCH(zend_uint, constinfo_cnt)
     1090    PROCESS(zend_uint, constinfo_cnt)
    10921091    STRUCT_ARRAY(constinfo_cnt, xc_constinfo_t, constinfos)
    10931092#endif
    10941093
    1095     DISPATCH(zend_uint, funcinfo_cnt)
     1094    PROCESS(zend_uint, funcinfo_cnt)
    10961095    STRUCT_ARRAY(funcinfo_cnt, xc_funcinfo_t, funcinfos)
    10971096
    1098     DISPATCH(zend_uint, classinfo_cnt)
     1097    PROCESS(zend_uint, classinfo_cnt)
    10991098    STRUCT_ARRAY(classinfo_cnt, xc_classinfo_t, classinfos, , IFRESTORE(`processor->active_class_index'))
    11001099#ifdef ZEND_ENGINE_2_1
    1101     DISPATCH(zend_uint, autoglobal_cnt)
     1100    PROCESS(zend_uint, autoglobal_cnt)
    11021101    IFRESTORE(`
    11031102        COPY(autoglobals)
     
    11071106#endif
    11081107#ifdef E_STRICT
    1109     DISPATCH(zend_uint, compilererror_cnt)
     1108    PROCESS(zend_uint, compilererror_cnt)
    11101109    IFRESTORE(`
    11111110        COPY(compilererrors)
     
    11151114#endif
    11161115#ifndef ZEND_COMPILE_DELAYED_BINDING
    1117     DISPATCH(zend_bool, have_early_binding)
    1118 #endif
    1119     DISPATCH(zend_bool, have_references)
     1116    PROCESS(zend_bool, have_early_binding)
     1117#endif
     1118    PROCESS(zend_bool, have_references)
    11201119')
    11211120dnl }}}
     
    11231122    IFDPRINT(`INDENT()`'fprintf(stderr, "zval:value");')
    11241123    STRUCT_P_EX(zval_ptr, dst->value, src->value, `value', `', `&')
    1125     DISPATCH(zend_bool, have_references)
     1124    PROCESS(zend_bool, have_references)
    11261125    DONE(value)
    11271126')
    11281127dnl }}}
    11291128DEF_STRUCT_P_FUNC(`xc_entry_t', , `dnl {{{
    1130     DISPATCH(xc_entry_type_t, type)
    1131     DISPATCH(size_t, size)
    1132 
    1133     DISPATCH(xc_hash_value_t, hvalue)
     1129    PROCESS(xc_entry_type_t, type)
     1130    PROCESS(size_t, size)
     1131
     1132    PROCESS(xc_hash_value_t, hvalue)
    11341133    COPY(cache)
    11351134    /* skip */
    11361135    DONE(next)
    11371136
    1138     IFSTORE(`dst->refcount = 0; DONE(refcount)', `DISPATCH(long, refcount)')
    1139 
    1140     DISPATCH(time_t, ctime)
    1141     DISPATCH(time_t, atime)
    1142     DISPATCH(time_t, dtime)
    1143     DISPATCH(long, ttl)
    1144     DISPATCH(zend_ulong, hits)
     1137    IFSTORE(`dst->refcount = 0; DONE(refcount)', `PROCESS(long, refcount)')
     1138
     1139    PROCESS(time_t, ctime)
     1140    PROCESS(time_t, atime)
     1141    PROCESS(time_t, dtime)
     1142    PROCESS(long, ttl)
     1143    PROCESS(zend_ulong, hits)
    11451144#ifdef IS_UNICODE
    1146     DISPATCH(zend_uchar, name_type)
     1145    PROCESS(zend_uchar, name_type)
    11471146#endif
    11481147    dnl {{{ name
     
    11501149#ifdef IS_UNICODE
    11511150        if (src->name_type == IS_UNICODE) {
    1152             DISPATCH(int32_t, name.ustr.len)
     1151            PROCESS(int32_t, name.ustr.len)
    11531152        }
    11541153        else {
    1155             DISPATCH(int, name.str.len)
     1154            PROCESS(int, name.str.len)
    11561155        }
    11571156#else
    1158         DISPATCH(int, name.str.len)
     1157        PROCESS(int, name.str.len)
    11591158#endif
    11601159        IFRESTORE(`COPY(name.str.val)', `
     
    11861185    DONE(data)
    11871186    dnl }}}
    1188     DISPATCH(time_t, mtime)
     1187    PROCESS(time_t, mtime)
    11891188#ifdef HAVE_INODE
    1190     DISPATCH(int, device)
    1191     DISPATCH(int, inode)
     1189    PROCESS(int, device)
     1190    PROCESS(int, inode)
    11921191#endif
    11931192
    11941193    if (src->type == XC_TYPE_PHP) {
    1195         DISPATCH(int, filepath_len)
     1194        PROCESS(int, filepath_len)
    11961195        IFRESTORE(`COPY(filepath)', `PROC_STRING_L(filepath, filepath_len)')
    1197         DISPATCH(int, dirpath_len)
     1196        PROCESS(int, dirpath_len)
    11981197        IFRESTORE(`COPY(dirpath)', `PROC_STRING_L(dirpath, dirpath_len)')
    11991198#ifdef IS_UNICODE
    1200         DISPATCH(int, ufilepath_len)
     1199        PROCESS(int, ufilepath_len)
    12011200        IFRESTORE(`COPY(ufilepath)', `PROC_USTRING_L(ufilepath, ufilepath_len)')
    1202         DISPATCH(int, udirpath_len)
     1201        PROCESS(int, udirpath_len)
    12031202        IFRESTORE(`COPY(udirpath)', `PROC_USTRING_L(udirpath, udirpath_len)')
    12041203#endif
  • trunk/processor/string.m4

    r828 r843  
    8787dnl }}}
    8888dnl PROC_STRING_N(1:name, 2:size, 3:type)
    89 define(`PROC_STRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `src->$2', `$1', `char')')
    90 define(`PROC_USTRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `src->$2', `$1', `UChar')')
     89define(`PROC_STRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `SRC(`$2')', `$1', `char')')
     90define(`PROC_USTRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `SRC(`$2')', `$1', `UChar')')
    9191
    9292define(`PROC_STRING_L', `DBG(`$0($*)') PROC_STRING_N(`$1', `$2 + 1')')
    9393define(`PROC_USTRING_L', `DBG(`$0($*)') PROC_USTRING_N(`$1', `$2 + 1')')
    94 define(`PROC_STRING',   `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `strlen(src->$1) + 1', `$1', `char')')
    95 define(`PROC_USTRING',  `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `strlen(src->$1) + 1', `$1', `UChar')')
     94define(`PROC_STRING',   `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `strlen(SRC(`$1')) + 1', `$1', `char')')
     95define(`PROC_USTRING',  `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `strlen(SRC(`$1')) + 1', `$1', `UChar')')
    9696
    9797dnl {{{ PROC_ZSTRING_N(1:type, 2:name, 3:size, 4:size_type)
     
    100100#ifdef IS_UNICODE
    101101    pushdef(`NSIZE', ifelse(
    102             `$4', `strlen', `UNI_STRLEN (src->$2) + 1',
    103             `$4', `len',    `src->$3 + 1',
    104             `',   `',       `src->$3',
     102            `$4', `strlen', `UNI_STRLEN (SRC(`$2')) + 1',
     103            `$4', `len',    `SRC(`$3') + 1',
     104            `',   `',       `SRC(`$3')',
    105105            ))
    106106    DONE(`$2')
    107     ifelse(`$1', `1', `PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_uchar')
     107    ifelse(`$1', `1', `PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', defn(`NSIZE'), `$2', `zstr_uchar')
    108108    ', `
    109         if (ifelse(`$1', `', `UG(unicode)', `src->$1 == IS_UNICODE')) {
    110             PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_uchar')
     109        if (ifelse(`$1', `', `UG(unicode)', `SRC(`$1') == IS_UNICODE')) {
     110            PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', defn(`NSIZE'), `$2', `zstr_uchar')
    111111        }
    112112        else {
    113             PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_char')
     113            PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', defn(`NSIZE'), `$2', `zstr_char')
    114114        }
    115115    ')
    116116#else
    117117    DONE(`$2')
    118     PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', `zstr_char')
     118    PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', NSIZE, `$2', `zstr_char')
    119119#endif
    120120    popdef(`NSIZE')
  • trunk/processor/struct.m4

    r835 r843  
    128128    DBG(`$0($*)')
    129129    pushdefFUNC_NAME(`$1', `$5')
    130     ifdef(`DEFINED_'ifelse(`$5', `', `$1', `$5'), `', `m4_errprint(`Unknown struct "'ifelse(`$5', `', `$1', `$5')`"')')
     130    ifdef(`DEFINED_'ifelse(`$5', `', `$1', `$5'), `', `m4_errprint(`AUTOCHECK ERROR: Unknown struct "'ifelse(`$5', `', `$1', `$5')`"')define(`EXIT_PENDING', 1)')
    131131    assert(sizeof($1) == sizeof(($6 $3)[0]));
    132132    ifelse(`$6', `', `ALLOC(`$2', `$1')')
     
    156156define(`STRUCT_P', `
    157157    DBG(`$0($*)')
    158     if (src->$2) {
     158    if (SRC(`$2')) {
    159159        IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2 ");')
    160         STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$2', `$3')
     160        STRUCT_P_EX(`$1', `dst->$2', `SRC(`$2')', `$2', `$3')
    161161    }
    162162    else {
     
    170170define(`STRUCT', `
    171171    DBG(`$0($*)')
    172     assert(sizeof($1) == sizeof(src->$2));
     172    assert(sizeof($1) == sizeof(SRC(`$2')));
    173173    IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2 ");')
    174     STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$2', `$3', `&')
     174    STRUCT_P_EX(`$1', `dst->$2', `SRC(`$2')', `$2', `$3', `&')
    175175    DONE(`$2')
    176176')
     
    178178dnl {{{ STRUCT_ARRAY(1:count, 2:type, 3:elm, 4:name=type, 5:loopcounter)
    179179define(`STRUCT_ARRAY', `
    180     if (src->$3) {
     180    if (SRC(`$3')) {
    181181        ifelse(
    182182            `$5', `', `int i; pushdef(`LOOPCOUNTER', `i')',
     
    188188            array_init(arr);
    189189
    190             LOOPCOUNTER = 0;
    191             while (
    192             ifelse(`$1', `', `src->$3[LOOPCOUNTER]',
    193             `', `', `LOOPCOUNTER < src->$1')
    194             ) {
     190            for (LOOPCOUNTER = 0;
     191                    ifelse(`$1', `', `SRC(`$3[LOOPCOUNTER]')',
     192                    `', `', `LOOPCOUNTER < SRC(`$1')');
     193                    ++LOOPCOUNTER) {
    195194                zval *zv;
    196195
    197196                ALLOC_INIT_ZVAL(zv);
    198197                array_init(zv);
    199                 FUNC_NAME (zv, &(src->$3[LOOPCOUNTER]) TSRMLS_CC);
     198                FUNC_NAME (zv, &(SRC(`$3[LOOPCOUNTER]')) TSRMLS_CC);
    200199                add_next_index_zval(arr, zv);
    201 
    202                 ++LOOPCOUNTER;
    203200            }
    204201            add_assoc_zval_ex(dst, ZEND_STRS("$3"), arr);
     
    206203            dnl find count with NULL
    207204            ifelse(`$1', `', `
    208                 int count;
    209                 for (count = 0; src->$3[count]; ++count) {
    210                     /* just count */
     205                size_t count = 0;
     206                while (SRC(`$3[count]')) {
     207                    ++count;
    211208                }
    212209                ++count;
    213                 pushdef(`STRUCT_COUNT', `count')
     210                pushdef(`ARRAY_ELEMENT_COUNT', `count')
    214211            ',
    215             `', `', `pushdef(`STRUCT_COUNT', `src->$1')')
    216             ALLOC(`dst->$3', `$2', `STRUCT_COUNT')
     212            `', `', `pushdef(`ARRAY_ELEMENT_COUNT', `SRC(`$1')')')
     213            ALLOC(`dst->$3', `$2', `ARRAY_ELEMENT_COUNT')
     214            popdef(`ARRAY_ELEMENT_COUNT')
     215
    217216            ifdef(`AFTER_ALLOC', AFTER_ALLOC)
    218217
    219             LOOPCOUNTER = 0;
    220             while (
    221             ifelse(`$1', `', `src->$3[LOOPCOUNTER]',
    222             `', `', `LOOPCOUNTER < src->$1')
    223             ) {
     218            for (LOOPCOUNTER = 0;
     219                    ifelse(`$1', `', `SRC(`$3[LOOPCOUNTER]')',
     220                    `', `', `LOOPCOUNTER < SRC(`$1')');
     221                    ++LOOPCOUNTER) {
    224222                DISABLECHECK(`
    225223                    STRUCT(`$2', `$3[LOOPCOUNTER]', `$4')
    226224                ')
    227 
    228                 ++LOOPCOUNTER;
    229225            }
    230             dnl tailing NULL
    231             ifelse(`$1', `', `IFCOPY(`dst->$3[LOOPCOUNTER] = NULL;')')
    232             popdef(`STRUCT_COUNT')
     226            dnl the end marker
     227            ifelse(`$1', `', `IFCOPY(`DST(`$3[LOOPCOUNTER]') = NULL;')')
    233228        ')dnl IFDASM
    234229        DONE(`$3')
Note: See TracChangeset for help on using the changeset viewer.