void delete_module( module_t * m ) { /* Clear out all the rules. */ if ( m->rules ) { hashenumerate( m->rules, delete_rule_, (void *)0 ); hashdone( m->rules ); m->rules = 0; } if ( m->native_rules ) { hashenumerate( m->native_rules, delete_native_rule, (void *)0 ); hashdone( m->native_rules ); m->native_rules = 0; } if ( m->variables ) { var_hash_swap( &m->variables ); var_done(); var_hash_swap( &m->variables ); m->variables = 0; } if ( m->imported_modules ) { hashenumerate( m->imported_modules, delete_imported_modules, (void *)0 ); hashdone( m->imported_modules ); m->imported_modules = 0; } }
void file_done() { remove_files_atexit(); if ( filecache_hash ) { hashenumerate( filecache_hash, free_file_info, (void *)0 ); hashdone( filecache_hash ); } if ( archivecache_hash ) { hashenumerate( archivecache_hash, free_file_archive_info, (void *)0 ); hashdone( archivecache_hash ); } }
void modules_done() { hashenumerate( module_hash, delete_module_, (void *)0 ); hashdone( module_hash ); module_hash = 0; delete_module( &root ); }
LIST * imported_modules( module_t * module ) { LIST * result = L0; if ( module->imported_modules ) hashenumerate( module->imported_modules, add_module_name, &result ); return result; }
void var_done( struct module_t * module ) { list_free( saved_var ); saved_var = L0; hashenumerate( module->variables, delete_var_, 0 ); hash_free( module->variables ); }
void var_done() { list_free( saved_var ); saved_var = 0; hashenumerate( varhash, delete_var_, (void *)0 ); hashdone( varhash ); }
void path_done( void ) { if ( path_key_cache ) { hashenumerate( path_key_cache, &free_path_key_entry, (void *)0 ); hashdone( path_key_cache ); } }
void profile_dump() { if ( profile_hash ) { printf("%10s %10s %10s %s\n", "gross", "net", "# entries", "name"); hashenumerate( profile_hash, dump_profile_entry, 0 ); } }
void regex_done() { if ( regex_hash ) { hashenumerate( regex_hash, free_regex, (void *)0 ); hashdone( regex_hash ); } }
void timestamp_done() { if ( bindhash ) { hashenumerate( bindhash, free_timestamps, 0 ); hashdone( bindhash ); } }
void search_done( void ) { if ( explicit_bindings ) { hashenumerate( explicit_bindings, free_binding, (void *)0 ); hashdone( explicit_bindings ); } }
void class_done( void ) { if( classes ) { hashenumerate( classes, free_class, (void *)0 ); hashdone( classes ); classes = 0; } }
void rules_done() { hashenumerate( targethash, freetarget, 0 ); hashdone( targethash ); while ( settings_freelist ) { SETTINGS * n = settings_freelist->next; BJAM_FREE( settings_freelist ); settings_freelist = n; } }
void profile_dump() { if ( profile_hash ) { printf( "%10s %12s %12s %12s %10s %10s %s\n", "--count--", "--gross--", "--net--", "--each--", "--mem--", "--each--", "--name--" ); hashenumerate( profile_hash, dump_profile_entry, 0 ); dump_profile_entry( &profile_other, 0 ); dump_profile_entry( &profile_total, (void *)1 ); } }
void donerules() { hashenumerate( targethash, freetarget, 0 ); hashdone( targethash ); while ( settings_freelist ) { SETTINGS* n = settings_freelist->next; free( settings_freelist ); settings_freelist = n; } }
static void import_base_rules( module_t * class_, OBJECT * base ) { OBJECT * module_name = class_module_name( base ); module_t * base_module = bindmodule( module_name ); LIST * imported; struct import_base_data d; d.base_name = base; d.base_module = base_module; d.class_module = class_; object_free( module_name ); if ( base_module->rules ) hashenumerate( base_module->rules, import_base_rule, &d ); imported = imported_modules( base_module ); import_module( imported, class_ ); list_free( imported ); }
void var_done() { hashenumerate( varhash, delete_var_, (void*)0 ); hashdone( varhash ); }
void bind_explicitly_located_targets() { if (targethash) hashenumerate(targethash, bind_explicitly_located_target, (void*)0); }