MCPcopy Create free account
hub / github.com/boostorg/build / make_class_module

Function make_class_module

src/engine/class.c:127–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125
126
127OBJECT * make_class_module( LIST * xname, LIST * bases, FRAME * frame )
128{
129 OBJECT * name = class_module_name( list_front( xname ) );
130 OBJECT * * pp;
131 module_t * class_module = 0;
132 module_t * outer_module = frame->module;
133 int found;
134
135 if ( !classes )
136 classes = hashinit( sizeof( OBJECT * ), "classes" );
137
138 pp = (OBJECT * *)hash_insert( classes, list_front( xname ), &found );
139 if ( !found )
140 {
141 *pp = object_copy( list_front( xname ) );
142 }
143 else
144 {
145 out_printf( "Class %s already defined\n", object_str( list_front( xname ) )
146 );
147 abort();
148 }
149 check_defined( bases );
150
151 class_module = bindmodule( name );
152
153 {
154 /*
155 Initialize variables that Boost.Build inserts in every object.
156 We want to avoid creating the object's hash if it isn't needed.
157 */
158 int num = class_module->num_fixed_variables;
159 module_add_fixed_var( class_module, constant_name, &num );
160 module_add_fixed_var( class_module, constant_class, &num );
161 module_set_fixed_variables( class_module, num );
162 }
163
164 var_set( class_module, constant_name, xname, VAR_SET );
165 var_set( class_module, constant_bases, bases, VAR_SET );
166
167 {
168 LISTITER iter = list_begin( bases );
169 LISTITER const end = list_end( bases );
170 for ( ; iter != end; iter = list_next( iter ) )
171 import_base_rules( class_module, list_item( iter ) );
172 }
173
174 return name;
175}
176
177
178static void free_class( void * xclass, void * data )

Callers 1

function_runFunction · 0.85

Calls 14

class_module_nameFunction · 0.85
hashinitFunction · 0.85
hash_insertFunction · 0.85
object_copyFunction · 0.85
out_printfFunction · 0.85
object_strFunction · 0.85
check_definedFunction · 0.85
bindmoduleFunction · 0.85
module_add_fixed_varFunction · 0.85
var_setFunction · 0.85
list_beginFunction · 0.85

Tested by

no test coverage detected