nitc :: MClassKind
Note this class is basically an enum.
FIXME: use a real enum once user-defined enums are available
nitc :: MClassKind :: _can_customize_isa
Can a class of kindself
define a membership predicate?
nitc :: MClassKind :: _can_init
Can a class of kindself
define a constructor?
nitc :: MClassKind :: _to_s
nitc :: MClassKind :: can_customize_isa
Can a class of kindself
define a membership predicate?
nitc :: MClassKind :: can_customize_isa=
Can a class of kindself
define a membership predicate?
nitc :: MClassKind :: can_init=
Can a class of kindself
define a constructor?
nitc :: MClassKind :: can_specialize
Can a class of kindself
specializes a class of kind other
?
nitc :: MClassKind :: defaultinit
nitc :: MClassKind :: need_init=
Is a constructor required?nitc :: MClassKind :: to_s=
nitc $ MClassKind :: SELF
Type of this instance, automatically specialized in every classnitc :: MClassKind :: _can_customize_isa
Can a class of kindself
define a membership predicate?
nitc :: MClassKind :: _can_init
Can a class of kindself
define a constructor?
nitc :: MClassKind :: _to_s
nitc :: MClassKind :: can_customize_isa
Can a class of kindself
define a membership predicate?
nitc :: MClassKind :: can_customize_isa=
Can a class of kindself
define a membership predicate?
nitc :: MClassKind :: can_init=
Can a class of kindself
define a constructor?
nitc :: MClassKind :: can_specialize
Can a class of kindself
specializes a class of kind other
?
core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
nitc :: MClassKind :: defaultinit
core :: Object :: defaultinit
core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
core :: Object :: native_class_name
The class name of the object in CString format.nitc :: MClassKind :: need_init=
Is a constructor required?core :: Object :: output_class_name
Display class name on stdout (debug only).nitc :: MClassKind :: to_s=
# A kind of class.
#
# * `abstract_kind`
# * `concrete_kind`
# * `interface_kind`
# * `enum_kind`
# * `extern_kind`
#
# Note this class is basically an enum.
# FIXME: use a real enum once user-defined enums are available
class MClassKind
redef var to_s
# Can a class of kind `self` define a membership predicate?
var can_customize_isa: Bool
# Can a class of kind `self` define a constructor?
var can_init: Bool
# Is a constructor required?
var need_init: Bool
# TODO: private init because enumeration.
# Can a class of kind `self` specializes a class of kind `other`?
fun can_specialize(other: MClassKind): Bool
do
if other == interface_kind then
# everybody can specialize interfaces
return true
else if self == interface_kind or self == enum_kind then
# no other case for interfaces and enums
return false
else if self == subset_kind then
# A subset may specialize anything, except another subset.
# TODO: Allow sub-subsets once we can handle them.
return other != subset_kind
else if self == extern_kind then
# only compatible with themselves
return self == other
else
# assert self == abstract_kind or self == concrete_kind
return other == abstract_kind or other == concrete_kind
end
end
end
src/model/model.nit:2720,1--2765,3