Property definitions

nitc $ MModuleMultiData :: defaultinit
# A `MModuleData` where multiples values could be set on a single module
# a-la `MultiHashMap`
class MModuleMultiData[E]
	super MModuleData[Array[E]]

	# Instead of `null` return an empty array usable
	redef fun [](mmodule)
	do
		var res = super
		if res == null then
			res = new Array[E]
			defs[mmodule] = res
		end
		return res
	end

	# like `lookup_all_values` but return a big concatenated sequence (instead of a sequence of array)
	fun lookup_joined_values(mmodule: MModule, min_visibility: MVisibility): Sequence[E]
	do
		var mmodules = lookup_all_modules(mmodule, min_visibility)
		mmodules = model.mmodule_importation_hierarchy.linearize(mmodules)
		var res = new Array[E]
		for m in mmodules do res.add_all defs[m]
		return res
	end
end
src/model/mmodule_data.nit:104,1--129,3