Changeset 719 in svn for trunk/processor/head.m4


Ignore:
Timestamp:
2011-04-09T12:22:14+02:00 (4 years ago)
Author:
Xuefer
Message:

runtime check for field list assertion to tell which is mismatch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/head.m4

    r690 r719  
    306306}
    307307/* }}} */
     308/* {{{ field name checker */
     309IFASSERT(`dnl
     310int xc_check_names(const char *file, int line, const char *functionName, const char **assert_names, int assert_names_count, HashTable *done_names)
     311{
     312    int errors = 0;
     313    if (assert_names_count) {
     314        int i;
     315        Bucket *b;
     316
     317        for (i = 0; i < assert_names_count; ++i) {
     318            if (!zend_hash_exists(done_names, assert_names[i], strlen(assert_names[i]) + 1)) {
     319                fprintf(stderr
     320                    , "missing field at %s `#'%d %s`' : %s\n"
     321                    , file, line, functionName
     322                    , assert_names[i]
     323                    );
     324                ++errors;
     325            }
     326        }
     327
     328        for (b = done_names->pListHead; b != NULL; b = b->pListNext) {
     329            int known = 0;
     330            int i;
     331            for (i = 0; i < assert_names_count; ++i) {
     332                if (strcmp(assert_names[i], BUCKET_KEY_S(b)) == 0) {
     333                    known = 1;
     334                    break;
     335                }
     336            }
     337            if (!known) {
     338                fprintf(stderr
     339                    , "unknown field at %s `#'%d %s`' : %s\n"
     340                    , file, line, functionName
     341                    , BUCKET_KEY_S(b)
     342                    );
     343                ++errors;
     344            }
     345        }
     346    }
     347    return errors;
     348}
     349')
     350/* }}} */
    308351dnl ================ export API
    309352define(`DEFINE_STORE_API', `
Note: See TracChangeset for help on using the changeset viewer.