Changeset 877 for trunk/processor/struct.m4
- Timestamp:
- 2012-04-01T05:39:31+02:00 (14 months ago)
- File:
-
- 1 edited
-
trunk/processor/struct.m4 (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/processor/struct.m4
r873 r877 1 1 define(`pushdefFUNC_NAME', ` 2 pushdef(`FUNC_NAME', `xc_`' KIND`'_`'ifelse(`$2', `', `$1', `$2')')2 pushdef(`FUNC_NAME', `xc_`'PROCESSOR_TYPE`'_`'ifelse(`$2', `', `$1', `$2')') 3 3 ') 4 4 dnl {{{ DECL_STRUCT_P_FUNC(1:type, 2:name, 3:comma=;) … … 30 30 { 31 31 pushdef(`ELEMENTS_DONE') 32 IFA SSERT(`32 IFAUTOCHECK(` 33 33 /* {{{ init assert */ 34 34 ifdef(`SIZEOF_$1', , `m4_errprint(`missing SIZEOF_$1, safe to ignore')') … … 45 45 define(`COUNTOF_$1', 0) 46 46 ') 47 int assert_size = SIZEOF_$1, assert_count = COUNTOF_$1; 48 int done_size = 0, done_count = 0; 49 const char *assert_names[] = { ifdef(`ELEMENTSOF_$1', `ELEMENTSOF_$1') }; 50 HashTable done_names; 51 zend_hash_init(&done_names, 0, NULL, NULL, 0); 47 int xc_autocheck_assert_size = SIZEOF_$1, assert_count = COUNTOF_$1; 48 int xc_autocheck_done_size = 0, xc_autocheck_done_count = 0; 49 const char *xc_autocheck_assert_names[] = { ifdef(`ELEMENTSOF_$1', `ELEMENTSOF_$1') }; 50 zend_bool xc_autocheck_skip = 0; 51 HashTable xc_autocheck_done_names; 52 zend_hash_init(&xc_autocheck_done_names, 0, NULL, NULL, 0); 52 53 /* }}} */ 53 54 IFRESTORE(`assert(xc_is_shm(src));') … … 71 72 INDENT()fprintf(stderr, "}\n"); 72 73 ') 73 ifdef(`SKIPASSERT_ONCE', ` 74 undefine(`SKIPASSERT_ONCE') 75 IFASSERT(` 76 zend_hash_destroy(&done_names); 74 IFAUTOCHECK(` 75 /* {{{ autocheck */ if (!xc_autocheck_skip) { 76 int name_check_errors = xc_check_names(__FILE__, __LINE__, "FUNC_NAME", xc_autocheck_assert_names, sizeof(xc_autocheck_assert_names) / sizeof(xc_autocheck_assert_names[0]), &xc_autocheck_done_names); 77 zend_hash_destroy(&xc_autocheck_done_names); 78 79 if (xc_autocheck_done_count != assert_count) { 80 fprintf(stderr 81 , "count assertion failed at %s `#'%d FUNC_NAME`' : unexpected:%d - expecting:%d = %d != 0\n" 82 , __FILE__, __LINE__ 83 , xc_autocheck_done_count, assert_count, xc_autocheck_done_count - assert_count 84 ); 85 } 86 if (xc_autocheck_done_size != xc_autocheck_assert_size) { 87 fprintf(stderr 88 , "size assertion failed at %s `#'%d FUNC_NAME`' : unexpected:%d - expecting:%d = %d != 0\n" 89 , __FILE__, __LINE__ 90 , xc_autocheck_done_size, xc_autocheck_assert_size, xc_autocheck_done_size - xc_autocheck_assert_size 91 ); 92 } 93 if (name_check_errors || xc_autocheck_done_count != assert_count || xc_autocheck_done_size != xc_autocheck_assert_size) { 94 assert(0); 95 } 96 } while (0); /* }}} */ 97 ') 98 ifdef(`ELEMENTSOF_$1', ` 99 pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE'))) 100 ifelse(defn(`ELEMENTS_UNDONE'), , `m4_errprint(`AUTOCHECK INFO: $1: processor looks good')', ` 101 m4_errprint(`AUTOCHECK ERROR: ====' PROCESSOR_TYPE `$1 =================') 102 m4_errprint(`AUTOCHECK expected:' defn(`ELEMENTSOF_$1')) 103 m4_errprint(`AUTOCHECK missing :' defn(`ELEMENTS_UNDONE')) 104 define(`EXIT_PENDING', 1) 77 105 ') 78 ', ` 79 IFASSERT(` 80 /* {{{ check assert */ do { 81 int name_check_errors = xc_check_names(__FILE__, __LINE__, "FUNC_NAME", assert_names, sizeof(assert_names) / sizeof(assert_names[0]), &done_names); 82 zend_hash_destroy(&done_names); 83 84 if (done_count != assert_count) { 85 fprintf(stderr 86 , "count assertion failed at %s `#'%d FUNC_NAME`' : unexpected:%d - expecting:%d = %d != 0\n" 87 , __FILE__, __LINE__ 88 , done_count, assert_count, done_count - assert_count 89 ); 90 } 91 if (done_size != assert_size) { 92 fprintf(stderr 93 , "size assertion failed at %s `#'%d FUNC_NAME`' : unexpected:%d - expecting:%d = %d != 0\n" 94 , __FILE__, __LINE__ 95 , done_size, assert_size, done_size - assert_size 96 ); 97 } 98 if (name_check_errors || done_count != assert_count || done_size != assert_size) { 99 assert(0); 100 } 101 } while (0); /* }}} */ 102 ') 103 ifdef(`ELEMENTSOF_$1', ` 104 pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE'))) 105 ifelse(defn(`ELEMENTS_UNDONE'), , `m4_errprint(`AUTOCHECK INFO: $1: processor looks good')', ` 106 m4_errprint(`AUTOCHECK ERROR: ====' KIND `$1 =================') 107 m4_errprint(`AUTOCHECK expected:' defn(`ELEMENTSOF_$1')) 108 m4_errprint(`AUTOCHECK missing :' defn(`ELEMENTS_UNDONE')) 109 define(`EXIT_PENDING', 1) 110 ') 111 popdef(`ELEMENTS_UNDONE') 112 ') 106 popdef(`ELEMENTS_UNDONE') 113 107 ') 114 108 ifdef(`USEMEMCPY', `IFCOPY(` 115 109 } while (0); 116 110 ')') 117 IFA SSERT(`111 IFAUTOCHECK(` 118 112 } while (0); 119 113 ')
Note: See TracChangeset
for help on using the changeset viewer.

