Changeset 4 for trunk/processor/struct.m4
- Timestamp:
- 05/13/2006 03:54:55 AM (7 years ago)
- Files:
-
- 1 modified
-
trunk/processor/struct.m4 (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/processor/struct.m4
r1 r4 3 3 ') 4 4 dnl {{{ DECL_STRUCT_P_FUNC(1:type, 2:name, 3:comma=;) 5 define(`DECL_STRUCT_P_FUNC', ` patsubst(5 define(`DECL_STRUCT_P_FUNC', `translit( 6 6 pushdefFUNC_NAME(`$1', `$2') 7 7 define(`DEFINED_'ifelse(`$2', `', `$1', `$2'), `') … … 17 17 )ifelse(`$3', `', `;') 18 18 popdef(`FUNC_NAME')dnl 19 , ` [20 ]+', ` ')')19 , ` 20 ', ` ')') 21 21 dnl }}} 22 22 dnl {{{ DEF_STRUCT_P_FUNC(1:type, 2:name, 3:body) … … 35 35 int assert_size = SIZEOF_$1, assert_count = COUNTOF_$1; 36 36 int done_size = 0, done_count = 0; 37 ifdef(`ELEMENTSOF_$1', ` 38 define(`ELEMENTS', defn(`ELEMENTSOF_$1')) 39 ') 37 pushdef(`ELEMENTS_DONE') 40 38 /* }}} */ 41 39 IFRESTORE(`assert(xc_is_shm(src));') … … 75 73 } 76 74 ifdef(`ELEMENTSOF_$1', ` 77 ifelse(ELEMENTS, , , ` 75 pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE'))) 76 ifelse(defn(`ELEMENTS_UNDONE'), , , ` 78 77 m4_errprint(`====' KIND `$1 =================') 79 m4_errprint(`expected:' ELEMENTSOF_$1)80 m4_errprint(`missing :' ELEMENTS)78 m4_errprint(`expected:' defn(`ELEMENTSOF_$1')) 79 m4_errprint(`missing :' defn(`ELEMENTS_UNDONE')) 81 80 define(`EXIT_PENDING', 1) 82 81 ') 82 popdef(`ELEMENTS_UNDONE') 83 83 ') 84 undefine(`ELEMENTS')85 84 /* }}} */ 86 85 ')') 86 IFASSERT(` 87 undefine(`ELEMENTS_DONE') 88 ') 87 89 } 88 90 /* }`}'} */ … … 90 92 ') 91 93 dnl }}} 92 dnl {{{ STRUCT_P_EX(1:type, 2:dst, 3:src, 4: name=type, 5:&)94 dnl {{{ STRUCT_P_EX(1:type, 2:dst, 3:src, 4:elm-name, 5:name=type, 6:&) 93 95 define(`STRUCT_P_EX', ` 94 96 DBG(`$0($*)') 95 pushdefFUNC_NAME(`$1', `$ 4')96 ifdef(`DEFINED_'ifelse(`$ 4', `', `$1', `$4'), `', `m4_errprint(`Unknown struct "'ifelse(`$4', `', `$1', `$4')`"')')97 assert(sizeof($1) == sizeof(($ 5$3)[0]));98 ifelse(`$ 5', `', `ALLOC(`$2', `$1')')97 pushdefFUNC_NAME(`$1', `$5') 98 ifdef(`DEFINED_'ifelse(`$5', `', `$1', `$5'), `', `m4_errprint(`Unknown struct "'ifelse(`$5', `', `$1', `$5')`"')') 99 assert(sizeof($1) == sizeof(($6 $3)[0])); 100 ifelse(`$6', `', `ALLOC(`$2', `$1')') 99 101 IFDASM(`do { 100 102 zval *zv; … … 103 105 ') 104 106 FUNC_NAME`'( 105 IFDPRINT( ` $ 5$3, indent')106 IFCALC( `processor, $ 5$3')107 IFSTORE( `processor, $ 5 $2, $5$3')108 IFRESTORE(`processor, $ 5 $2, $5$3')109 IFDASM( `zv, $ 5$3')110 IFASM( `$ 5 $2, $5$3')107 IFDPRINT( ` $6 $3, indent') 108 IFCALC( `processor, $6 $3') 109 IFSTORE( `processor, $6 $2, $6 $3') 110 IFRESTORE(`processor, $6 $2, $6 $3') 111 IFDASM( `zv, $6 $3') 112 IFASM( `$6 $2, $6 $3') 111 113 TSRMLS_CC 112 114 ); 113 115 IFDASM(` 114 add_assoc_zval_ex(dst, ZEND_STRS(" patsubst(`$2', `dst->')"), zv);116 add_assoc_zval_ex(dst, ZEND_STRS("$4"), zv); 115 117 } while (0); 116 118 ') 117 119 popdef(`FUNC_NAME') 118 ifelse(`$ 5', , `FIXPOINTER_EX(`$1', `$2')')120 ifelse(`$6', , `FIXPOINTER_EX(`$1', `$2')') 119 121 ') 120 122 dnl }}} … … 123 125 DBG(`$0($*)') 124 126 if (src->$2) { 125 STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$ 3')127 STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$2', `$3') 126 128 IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2");') 127 129 } 128 130 else { 129 COPYNULL_EX( dst->$2)131 COPYNULL_EX(`dst->$2', `$2') 130 132 IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2:\tNULL\n");') 131 133 } … … 138 140 assert(sizeof($1) == sizeof(src->$2)); 139 141 IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2");') 140 STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$ 3', `&')142 STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$2', `$3', `&') 141 143 DONE(`$2') 142 144 ')

