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:
#
# * `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
private var level: Int
- private init(s: String, level: Int)
- do
- self.to_s = s
- self.level = level
- end
+ # TODO: private init because enumeration.
# Is self give less visibility than other
# none < private < protected < public < intrude
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)