+ var class_coloring = new ClassAndPerfectHashing(mainmodule)
+ self.class_colors = class_coloring.compute_masks(mclasses, class_ids)
+ self.class_tables = class_coloring.hash_type_tables(mclasses, class_ids, class_colors)
+
+ self.header.add_decl("#define HASH(mask, id) ((mask)&(id))")
+ else
+ var class_coloring
+ if modelbuilder.toolcontext.opt_bm_typing.value then
+ class_coloring = new NaiveClassColoring(mainmodule)
+ else
+ class_coloring = new ClassColoring(mainmodule)
+ end
+ # set type unique id
+ for mclass in mclasses do
+ self.class_ids[mclass] = self.class_ids.length + 1
+ end
+ self.class_colors = class_coloring.colorize(modelbuilder.model.mclasses)
+ self.class_tables = class_coloring.build_type_tables(modelbuilder.model.mclasses, class_colors)
+ end