nitg*: extern classes a polymorph in Nit, and unboxed only for extern methods
[nit.git] / src / model / model_base.nit
index dda72bb..ef17543 100644 (file)
@@ -22,6 +22,23 @@ module model_base
 class Model
 end
 
+# A named and possibly documented entity in the model.
+# This class is usefull 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:
 #
@@ -54,8 +71,8 @@ class MVisibility
        end
 end
 
-fun intrude_visibility: MVisibility do return once new MVisibility("intrude", 4)
+fun intrude_visibility: MVisibility do return once new MVisibility("intrude", 5)
 fun public_visibility: MVisibility do return once new MVisibility("public", 4)
 fun protected_visibility: MVisibility do return once new MVisibility("protected", 3)
 fun private_visibility: MVisibility do return once new MVisibility("private", 2)
-fun none_visibility: MVisibility do return once new MVisibility("none", 2)
+fun none_visibility: MVisibility do return once new MVisibility("none", 1)