var compound: Compound is writable, noinit
private var memberdef: MemberDefListener is noinit
+ private var param_listener: TypeParamListener is noinit
# Default attributes for members in the current section.
private var member_defaults: MemberDefaults is noinit
var defaults = new MemberDefaults("public", false, false)
memberdef = new MemberDefListener(reader, self)
+ param_listener = new TypeParamListener(reader, self)
member_defaults = defaults
section_kinds = new DefaultMap[String, MemberDefaults](defaults)
if member_defaults.is_special then
super # TODO
end
- else
+ else if "param" == local_name then
+ param_listener.listen_until(dox_uri, local_name)
+ else if "templateparamlist" != local_name then
super
end
end
end
else if local_name == "basecompoundref" then
compound.declare_super(refid, text.to_s, prot, virt)
+ else if "param" == local_name and compound isa ClassCompound then
+ compound.as(ClassCompound).add_type_parameter(param_listener.parameter)
else
super
end
class_def.declare_member(member)
end
+ # Append the specified type parameter.
+ fun add_type_parameter(parameter: TypeParameter) do
+ class_type.arguments.add(parameter)
+ end
+
redef fun put_in_graph do
super
class_type.put_in_graph
# You may use this attribute or `class_compound` to specify the class.
var class_compound_id: String = "" is writable
+ # The type arguments or the type parameters.
var arguments = new Array[TypeEntity]
init do
end
# Return the number of arguments.
- fun arity: Int do return 0 # TODO
+ fun arity: Int do return arguments.length
fun is_generic: Bool do return arity > 0