Ignore:
Timestamp:
2012-03-25T09:01:16+02:00 (2 years ago)
Author:
moo
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.