Changeset 103 for trunk/processor/string.m4
- Timestamp:
- 08/27/2006 07:09:02 AM (7 years ago)
- Files:
-
- 1 modified
-
trunk/processor/string.m4 (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/processor/string.m4
r100 r103 3 3 define(`PROC_STRING_N_EX', ` 4 4 pushdef(`STRTYPE', `ifelse(`$5',,`char',`$5')') 5 pushdef(`ISTYPE', ifelse(STRTYPE,`char',IS_STRING,IS_UNICODE)) 6 if ($2 == NULL) { 5 pushdef(`PTRTYPE', ifelse( 6 STRTYPE, `char', `char', 7 STRTYPE, `zstr_char', `char', 8 `', `', `UChar')) 9 pushdef(`ISTYPE', ifelse(STRTYPE,`zstr_uchar',IS_UNICODE,IS_STRING)) 10 pushdef(`UNI_STRLEN', ifelse( 11 STRTYPE, `zstr_uchar', `xc_zstrlen_uchar', 12 STRTYPE, `zstr_char', `xc_zstrlen_char', 13 `', `', `strlen')) 14 pushdef(`SRCSTR', ifelse(STRTYPE,`char',`ZSTR($2)',`$2')) 15 pushdef(`SRCPTR', ifelse( 16 STRTYPE, `zstr_uchar', `ZSTR_U($2)', 17 STRTYPE, `zstr_char', `ZSTR_S($2)', 18 `', `', `$2')) 19 pushdef(`DSTPTR', ifelse( 20 STRTYPE, `zstr_uchar', `ZSTR_U($1)', 21 STRTYPE, `zstr_char', `ZSTR_S($1)', 22 `', `', `$1')) 23 if (SRCPTR == NULL) { 7 24 IFNOTMEMCPY(`IFCOPY(` 8 $1= NULL;25 DSTPTR = NULL; 9 26 ')') 10 27 IFDASM(` … … 14 31 else { 15 32 IFDPRINT(`INDENT() 16 ifelse(STRTYPE, ` UChar', `33 ifelse(STRTYPE, `zstr_uchar', ` 17 34 #ifdef IS_UNICODE 18 35 do { … … 32 49 #endif 33 50 ', ` 34 fprintf(stderr, "string:%s:\t\"%s\" len=%d\n", "$1", $2, $3 - 1);51 fprintf(stderr, "string:%s:\t\"%s\" len=%d\n", "$1", SRCPTR, $3 - 1); 35 52 ') 36 53 ') 37 IFCALC(`xc_calc_string_n(processor, ISTYPE, (void *) $2, `$3'IFASSERT(`, __LINE__'));')38 IFSTORE(` $1 = (STRTYPE *) xc_store_string_n(processor, ISTYPE, (char *) $2, `$3' IFASSERT(`, __LINE__'));')54 IFCALC(`xc_calc_string_n(processor, ISTYPE, SRCSTR, $3 IFASSERT(`, __LINE__'));') 55 IFSTORE(`DSTPTR = ifelse(PTRTYPE,`char',`ZSTR_S',`ZSTR_U')(xc_store_string_n(processor, ISTYPE, SRCSTR, $3 IFASSERT(`, __LINE__')));') 39 56 IFRESTORE(` 40 ALLOC( `$1', `STRTYPE', `($3)')41 memcpy( $1, $2, sizeof(STRTYPE) * ($3));57 ALLOC(DSTPTR, `STRTYPE', `($3)') 58 memcpy(DSTPTR, SRCPTR, sizeof(STRTYPE) * ($3)); 42 59 ') 43 FIXPOINTER_EX(` STRTYPE', `$1')60 FIXPOINTER_EX(`PTRTYPE', DSTPTR) 44 61 IFDASM(` 45 ifelse(STRTYPE, UChar, `62 ifelse(STRTYPE,zstr_uchar, ` 46 63 add_assoc_unicodel_ex(dst, ZEND_STRS("$4"), $2, $3-1, 1); 47 64 ', ` dnl else … … 49 66 ') 50 67 } 68 popdef(`DSTPTR') 69 popdef(`SRCPTR') 70 popdef(`SRCSTR') 71 popdef(`UNI_STRLEN') 51 72 popdef(`STRTYPE') 52 73 popdef(`ISTYPE') … … 59 80 define(`PROC_STRING', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `strlen(src->$1) + 1', `$1', `char')') 60 81 61 dnl {{{ PROC_ USTRING_N(1:type, 2:name, 3:size, 4:size_type)62 define(`PROC_ USTRING_N', `82 dnl {{{ PROC_ZSTRING_N(1:type, 2:name, 3:size, 4:size_type) 83 define(`PROC_ZSTRING_N', ` 63 84 DBG(`$0($*)') 64 85 #ifdef IS_UNICODE 65 86 pushdef(`NSIZE', ifelse( 66 `$4', `strlen', ` strlen(src->$2) + 1',87 `$4', `strlen', `UNI_STRLEN (src->$2) + 1', 67 88 `$4', `len', `src->$3 + 1', 68 89 `', `', `src->$3', 69 90 )) 70 91 DONE(`$2') 71 ifelse(`$1', `1', `PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', `UChar')92 ifelse(`$1', `1', `PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_uchar') 72 93 ', ` 73 if (ifelse(`$1', `', `UG(unicode)', `src->$1 ')) {74 PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', `UChar')94 if (ifelse(`$1', `', `UG(unicode)', `src->$1 == IS_UNICODE')) { 95 PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_uchar') 75 96 } 76 97 else { 77 PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', `char')98 PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_char') 78 99 } 79 100 ') 80 101 #else 81 102 DONE(`$2') 82 PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', ` char')103 PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', `zstr_char') 83 104 #endif 84 105 popdef(`NSIZE') 85 106 ') 86 107 // }}} 87 define(`PROC_ USTRING_L', `DBG(`$0($*)') PROC_USTRING_N(`$1', `$2', `$3', `len')')88 define(`PROC_ USTRING', `DBG(`$0($*)') PROC_USTRING_N(`$1', `$2', , `strlen')')108 define(`PROC_ZSTRING_L', `DBG(`$0($*)') PROC_ZSTRING_N(`$1', `$2', `$3', `len')') 109 define(`PROC_ZSTRING', `DBG(`$0($*)') PROC_ZSTRING_N(`$1', `$2', , `strlen')')

