+
+redef class AQclassid
+ # The name of the package part, if any
+ fun mpackname: nullable String do
+ var nqualified = n_qualified
+ if nqualified == null then return null
+ var nids = nqualified.n_id
+ if nids.length <= 0 then return null
+ return nids[0].text
+ end
+
+ # The name of the module part, if any
+ fun mmodname: nullable String do
+ var nqualified = n_qualified
+ if nqualified == null then return null
+ var nids = nqualified.n_id
+ if nids.length <= 1 then return null
+ return nids[1].text
+ end
+
+ # Does `mclass` match the full qualified name?
+ fun accept(mclass: MClass): Bool
+ do
+ if mclass.name != n_id.text then return false
+ var mpackname = self.mpackname
+ if mpackname != null then
+ var mpackage = mclass.intro_mmodule.mpackage
+ if mpackage == null then return false
+ if mpackage.name != mpackname then return false
+ var mmodname = self.mmodname
+ if mmodname != null and mclass.intro_mmodule.name != mmodname then return false
+ end
+ return true
+ end
+
+ # The pretty name represented by self.
+ fun full_name: String
+ do
+ var res = n_id.text
+ var nqualified = n_qualified
+ if nqualified == null then return res
+ var ncid = nqualified.n_classid
+ if ncid != null then res = ncid.text + "::" + res
+ var nids = nqualified.n_id
+ if nids.not_empty then for n in nids.reverse_iterator do
+ res = n.text + "::" + res
+ end
+ return res
+ end
+end