-
- var layout_builder: TypingLayoutBuilder[MClass]
- if modelbuilder.toolcontext.opt_phmod_typing.value then
- layout_builder = new MClassHasher(new PHModOperator, mainmodule)
- else if modelbuilder.toolcontext.opt_phand_typing.value then
- layout_builder = new MClassHasher(new PHAndOperator, mainmodule)
- else if modelbuilder.toolcontext.opt_bm_typing.value then
- layout_builder = new MClassBMizer(mainmodule)
- else
- layout_builder = new MClassColorer(mainmodule)
+ var poset = mainmodule.flatten_mclass_hierarchy
+ var colorer = new POSetColorer[MClass]
+ colorer.colorize(poset)
+ class_ids = colorer.ids
+ class_colors = colorer.colors
+ class_tables = self.build_class_typing_tables(mclasses)
+
+ # lookup vt to build layout with
+ var vts = new HashMap[MClass, Set[MVirtualTypeProp]]
+ for mclass in mclasses do
+ vts[mclass] = new HashSet[MVirtualTypeProp]
+ for mprop in self.mainmodule.properties(mclass) do
+ if mprop isa MVirtualTypeProp then
+ vts[mclass].add(mprop)
+ end
+ end