Changeset 843 for trunk/processor/process.m4
- Timestamp:
- 2012-03-25T09:01:16+02:00 (14 months ago)
- File:
-
- 1 moved
-
trunk/processor/process.m4 (moved) (moved from trunk/processor/dispatch.m4) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/processor/process.m4
r840 r843 1 dnl DISPATCH(1:type, 2:elm) 2 define(`DISPATCH', ` 1 define(`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 ') 15 dnl }}} 16 define(`PROCESS_xc_ztstring', `dnl {{{ (1:elm) 17 PROC_STRING(`$1') 18 ') 19 dnl }}} 20 define(`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 ') 27 dnl }}} 28 define(`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 ') 35 dnl }}} 36 define(`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 ') 43 dnl }}} 44 define(`PROCESS', `dnl PROCESS(1:type, 2:elm) 3 45 DBG(`$0($*)') 4 assert(sizeof($1) == sizeof( src->$2));46 assert(sizeof($1) == sizeof(SRC(`$2'))); 5 47 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)' 28 74 ) 29 75 ') 30 dnl {{{ DISPATCH_ARRAY(1:count, 2:type, 3:elm) 31 define(`DISPATCH_ARRAY', ` 76 define(`PROCESS_ARRAY', `dnl {{{ (1:count, 2:type, 3:elm, [4:force_type]) 32 77 if (src->$3) { 33 int i;78 int LOOPCOUNTER; 34 79 IFDASM(` 35 80 zval *arr; 36 81 ALLOC_INIT_ZVAL(arr); 37 82 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; 42 105 } 43 106 add_assoc_zval_ex(dst, ZEND_STRS("$3"), arr); 44 107 ', ` 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) { 47 125 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') 49 131 ') 50 132 } 133 dnl the end marker 134 ifelse(`$1', `', `IFCOPY(`DST(`$3[LOOPCOUNTER]') = NULL;')') 51 135 ')dnl IFDASM 52 136 DONE(`$3')
Note: See TracChangeset
for help on using the changeset viewer.

