Ignore:
Timestamp:
2013-11-05T18:17:07+01:00 (6 months ago)
Author:
moo
Message:

adds ptrmove

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/struct.m4

    r1416 r1440  
    1212        IFSTORE(  `xc_processor_t *processor, $1 *dst, const $1 * const src') 
    1313        IFRESTORE(`xc_processor_t *processor, $1 *dst, const $1 * const src') 
     14        IFPTRMOVE(`const xc_ptrmove_t *ptrmove, $1 * const dst, const $1 * const src') 
    1415        IFDASM(   `xc_dasm_t *dasm, zval *dst, const $1 * const src') 
    1516        TSRMLS_DC 
     
    5960            IFRESTORE(`assert(xc_is_shm(src));') 
    6061            IFCALCSTORE(`assert(!xc_is_shm(src));') 
    61             do { 
    6262        ') 
    6363        ifdef(`SIZEOF_$1', , `m4_errprint(`AUTOCHECK WARN: $1: missing structinfo, dont panic')') 
     
    6565        ifdef(`USEMEMCPY', `IFCOPY(` 
    6666            memcpy(dst, src, sizeof($1)); 
    67             do { 
    6867        ')') 
    6968 
     
    7170            fprintf(stderr, "%s", "{\n"); 
    7271            indent ++; 
    73             { 
    74         ') 
    75         $3`' 
     72        ') 
     73        { 
     74            $3`' 
     75        } 
    7676        IFDPRINT(` 
    77             } 
    7877            indent --; 
    7978            INDENT()fprintf(stderr, "}\n"); 
    8079        ') 
     80 
    8181        IFAUTOCHECK(` 
    8282        /* {{{ autocheck */ 
     
    105105        /* }}} */ 
    106106        ') 
    107         ifdef(`ELEMENTSOF_$1', ` 
    108             pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE'))) 
    109             ifelse(defn(`ELEMENTS_UNDONE'), , `m4_errprint(`AUTOCHECK INFO: $1: processor looks good')', ` 
    110                 m4_errprint(`AUTOCHECK ERROR: ====' PROCESSOR_TYPE `$1 =================') 
    111                 m4_errprint(`AUTOCHECK expected:' defn(`ELEMENTSOF_$1')) 
    112                 m4_errprint(`AUTOCHECK missing :' defn(`ELEMENTS_UNDONE')) 
    113                 define(`EXIT_PENDING', 1) 
    114             ') 
    115             popdef(`ELEMENTS_UNDONE') 
    116         ') 
    117         ifdef(`USEMEMCPY', `IFCOPY(` 
    118             } while (0); 
    119         ')') 
    120         IFAUTOCHECK(` 
    121             } while (0); 
    122         ') 
     107        ifdef(`AUTOCHECK_SKIP', `undefine(`AUTOCHECK_SKIP')', ` 
     108            ifdef(`ELEMENTSOF_$1', ` 
     109                pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE'))) 
     110                ifelse(defn(`ELEMENTS_UNDONE'), , `m4_errprint(`AUTOCHECK INFO: $1: processor looks good')', ` 
     111                    m4_errprint(`AUTOCHECK ERROR: ====' PROCESSOR_TYPE `$1 =================') 
     112                    m4_errprint(`AUTOCHECK expected:' defn(`ELEMENTSOF_$1')) 
     113                    m4_errprint(`AUTOCHECK missing :' defn(`ELEMENTS_UNDONE')) 
     114                    define(`EXIT_PENDING', 1) 
     115                ') 
     116                popdef(`ELEMENTS_UNDONE') 
     117            ') 
     118        ') 
     119 
    123120        popdef(`ELEMENTS_DONE') 
    124121    } 
     
    146143        IFSTORE(  `processor, $6 $2, $6 $3') 
    147144        IFRESTORE(`processor, $6 $2, $6 $3') 
     145        IFPTRMOVE(` 
     146            ptrmove 
     147            , ifelse(`$6', `', `DSTPTR_EX(`$1', `$2')', `$6 $2') 
     148            , ifelse(`$6', `', `SRCPTR_EX(`$1', `$3')', `$6 $3') 
     149        ') 
    148150        IFDASM(   `dasm, ifdef(`DASM_STRUCT_DIRECT', `dst', `zv'), $6 $3') 
    149151        TSRMLS_CC 
     
    156158') 
    157159    popdef(`FUNC_NAME') 
    158     ifelse(`$6', , `FIXPOINTER_EX(`$1', `$2')') 
     160    ifelse(`$6', , `FIXPOINTER_EX(`$1', `$2', `$3')') 
    159161') 
    160162dnl }}} 
Note: See TracChangeset for help on using the changeset viewer.