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


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

PHP_5_4: handle exclude_from_classes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.