model: better implementation of the two `intro` methods
[nit.git] / src / model / model_base.nit
index dda72bb..ae5553d 100644 (file)
@@ -22,6 +22,23 @@ module model_base
 class Model
 end
 
+# A named and possibly documented entity in the model.
+# This class is useful to generalize presentation of entities to the human.
+abstract class MEntity
+       # The short (unqualified) name of this model entity
+       fun name: String is abstract
+
+       # A Model Entity has a direct link to its model
+       fun model: Model is abstract
+end
+
+# Something that represents a concern
+abstract class MConcern
+       super MEntity
+       # The concern that contains `self` or null if `self` is the root of the concern hierarchy
+       fun parent_concern: nullable MConcern is abstract
+end
+
 # A visibility (for modules, class and properties)
 # Valid visibility are:
 #
@@ -29,6 +46,7 @@ end
 #  * `public_visibility`
 #  * `protected_visibility`
 #  * `none_visibility`
+#  * `private_visiblity`
 #
 # Note this class is basically an enum.
 # FIXME: use a real enum once user-defined enums are available
@@ -54,8 +72,13 @@ class MVisibility
        end
 end
 
-fun intrude_visibility: MVisibility do return once new MVisibility("intrude", 4)
+# The visibility level `intrude`
+fun intrude_visibility: MVisibility do return once new MVisibility("intrude", 5)
+# The visibility level `public`
 fun public_visibility: MVisibility do return once new MVisibility("public", 4)
+# The visibility level `protected`
 fun protected_visibility: MVisibility do return once new MVisibility("protected", 3)
+# The visibility level `private`
 fun private_visibility: MVisibility do return once new MVisibility("private", 2)
-fun none_visibility: MVisibility do return once new MVisibility("none", 2)
+# The visibility level `none` (no visibility)
+fun none_visibility: MVisibility do return once new MVisibility("none", 1)