Changeset 843 in svn for trunk/processor/process.m4


Ignore:
Timestamp:
2012-03-25T07:01:16Z (3 years ago)
Author:
Xuefer
Message:

PHP_5_4: handle exclude_from_classes

File:
1 moved

Legend:

Unmodified
Added
Removed
  • 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')
Note: See TracChangeset for help on using the changeset viewer.