nitc :: MGenericType
A generic type a just a class with additional formal generic arguments.
nitc :: MGenericType :: _arguments
nitc :: MGenericType :: _c_name
nitc :: MGenericType :: _full_name
The full-name of the class, then the full-name of each type arguments within brackets.nitc :: MGenericType :: _need_anchor
nitc :: MGenericType :: _to_s
The short-name of the class, then the full-name of each type arguments within brackets.nitc :: MGenericType :: c_name=
nitc :: MGenericType :: defaultinit
nitc :: MGenericType :: full_name=
The full-name of the class, then the full-name of each type arguments within brackets.nitc :: MGenericType :: need_anchor=
nitc :: MGenericType :: to_s=
The short-name of the class, then the full-name of each type arguments within brackets.nitc $ MGenericType :: SELF
Type of this instance, automatically specialized in every classnitc $ MGenericType :: arguments=
The formal arguments of the typenitc $ MGenericType :: c_name
A fully-qualified C-like identifier of this model entity.nitc $ MGenericType :: can_resolve_for
Can the type be resolved?nitc :: term_model $ MGenericType :: cs_signature
Returnsself
signature formatted for console.
nitc $ MGenericType :: full_name
The full-name of the class, then the full-name of each type arguments within brackets.nitc :: html_model $ MGenericType :: html_signature
Returns the MEntity signature decorated with HTMLnitc $ MGenericType :: init
nitc $ MGenericType :: is_legal_in
Is the type legal in a givenmmodule
(with an optional anchor
)?
nitc $ MGenericType :: is_ok
Is the type aMErrorType
or contains an MErrorType
?
nitc :: nitni_base $ MGenericType :: mangled_cname
Representation of this type in mangled Cnitc $ MGenericType :: need_anchor
Doesself
contain a virtual type or a formal generic parameter type?
nitc $ MGenericType :: resolve_for
Replace formals generic types in self with resolved values inmtype
nitc $ MGenericType :: to_s
The short-name of the class, then the full-name of each type arguments within brackets.nitc :: MClassType :: _api_url
nitc :: MGenericType :: _arguments
nitc :: MClassType :: _arguments
The formal arguments of the typenitc :: MType :: _as_nullable_cache
nitc :: MGenericType :: _c_name
nitc :: MEntity :: _const_color
nitc :: MEntity :: _css_classes
CSS classes used to decorateself
nitc :: MClassType :: _ctype
nitc :: MEntity :: _deprecation
Is the entity deprecated?nitc :: MGenericType :: _full_name
The full-name of the class, then the full-name of each type arguments within brackets.nitc :: MEntity :: _html_full_name
The MEntityfull_name
escaped for HTML
nitc :: MEntity :: _is_broken
The indication that the entity did not pass some semantic verifications.nitc :: MClassType :: _is_c_primitive
nitc :: MType :: _is_java_primitive
Is the associated Java type a primitive one?nitc :: MClassType :: _java_type
nitc :: MGenericType :: _need_anchor
nitc :: MGenericType :: _to_s
The short-name of the class, then the full-name of each type arguments within brackets.nitc :: MClassType :: _web_url
serialization :: Serializable :: accept_inspect_serializer_core
serialization :: Serializable :: accept_json_serializer
Refinable service to customize the serialization of this class to JSONserialization :: Serializable :: accept_msgpack_attribute_counter
Hook to customize the behavior of theAttributeCounter
serialization :: Serializable :: accept_msgpack_serializer
Hook to customize the serialization of this class to MessagePacknitc :: MEntity :: add_doc_to_infobox
Append an entry for the doc in the given infoboxserialization :: Serializable :: add_to_bundle
Called by[]=
to dynamically choose the appropriate method according
nitc :: MClassType :: api_url=
nitc :: MClassType :: arguments=
The formal arguments of the typenitc :: MType :: as_nullable_cache
nitc :: MType :: as_nullable_cache=
nitc :: MGenericType :: c_name=
nitc :: MType :: call_arg_field
Field to store this type in the C structurenit_call_arg
nitc :: MType :: can_resolve_for
Can the type be resolved?core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
nitc :: MType :: cname_blind
Representation of this type in C for the internal of the systemnitc :: MType :: cname_normal_class
Name of this type in C for normal classes (not extern and not primitive)nitc :: MEntity :: collect_ancestors
Collectself
ancestors (direct and indirect)
nitc :: MEntity :: collect_children
Collectself
children (direct descendants)
nitc :: MEntity :: collect_descendants
Collectself
descendants (direct and direct)
nitc :: MEntity :: collect_linearization
Collectself
linearization anchored on mainmodule
nitc :: MType :: collect_mclassdefs
Compute all the classdefs inherited/imported.nitc :: MType :: collect_mclasses
Compute all the super-classes.nitc :: MEntity :: collect_metrics
nitc :: MEntity :: collect_modifiers
Collect modifier keywords likeredef
, private
etc
nitc :: MType :: collect_mtypes
Compute all the declared super-types.nitc :: MEntity :: collect_parents
Collectself
parents (direct ancestors)
nitc :: MClassType :: collect_things
common implementation forcollect_mclassdefs
, collect_mclasses
, and collect_mtypes
.
nitc :: NitniCallback :: compile_callback_to_java
Compile C and Java code to implement this callbacknitc :: NitniCallback :: compile_callback_to_objc
Compile this callback to be callable from Objective-Cnitc :: MType :: compile_extern_type
nitc :: MEntity :: const_color
nitc :: MEntity :: const_color=
nitc :: MEntity :: core_serialize_base
serialization :: Serializable :: core_serialize_to
Actual serialization ofself
to serializer
nitc :: MEntity :: create_ast_representation
Build a ANode fromself
nitc :: MEntity :: cs_comment
Returns the comment of this MEntity formatted for console.nitc :: MEntity :: cs_declaration
Returns the complete MEntity declaration (modifiers + name + signature).nitc :: MEntity :: cs_full_name
Returnsself.full_name
formatted for console
nitc :: MEntity :: cs_list_item
Returnsself
as a list element that can be displayed in console.
nitc :: MEntity :: cs_location
Source code location of this MEntity formatted for consolenitc :: MEntity :: cs_short_comment
Returns the comment of this MEntity formatted for console.nitc :: MEntity :: cs_signature
Returnsself
signature formatted for console.
nitc :: MEntity :: cs_source_code
Source code associated to this MEntity.nitc :: MEntity :: css_classes=
CSS classes used to decorateself
nitc :: MClassType :: ctype=
nitc :: MType :: ctype_extern
C type outside of the compiler code and in boxesnitc :: MType :: defaultinit
nitc :: MClassType :: defaultinit
core :: Object :: defaultinit
nitc :: MEntity :: defaultinit
nitc :: NitniCallback :: defaultinit
nitc :: MGenericType :: defaultinit
nitc :: HInfoBoxable :: defaultinit
nitc :: MEntity :: deprecation=
Is the entity deprecated?nitc :: MEntity :: field_separator
serialization :: Serializable :: from_deserializer
Create an instance of this class from thedeserializer
nitc :: MGenericType :: full_name=
The full-name of the class, then the full-name of each type arguments within brackets.nitc :: MType :: gen_arg_convert
Write code intemplate
to parse the argument arg_name
to this parameter type
nitc :: MType :: has_mproperty
Is the property in self for a given modulenitc :: MEntity :: hierarchy_poset
Build a poset representingself
in it's own hierarchy
nitc :: MEntity :: html_declaration
Returns the complete MEntity declaration decorated with HTMLnitc :: MEntity :: html_full_name=
The MEntityfull_name
escaped for HTML
nitc :: MEntity :: html_name=
The MEntity name escaped for HTMLnitc :: MEntity :: html_namespace
Returnsfull_name
decorated with HTML links
nitc :: MEntity :: html_signature
Returns the MEntity signature decorated with HTMLnitc :: HInfoBoxable :: infobox
An new infobox documenting the entitynitc :: MEntity :: is_broken=
The indication that the entity did not pass some semantic verifications.nitc :: MClassType :: is_c_primitive=
nitc :: MType :: is_cprimitive
Does this type have a primitive representation?nitc :: MEntity :: is_fictive=
Isself
created for internal purpose?
nitc :: MType :: is_java_primitive
Is the associated Java type a primitive one?nitc :: MType :: is_java_primitive=
Is the associated Java type a primitive one?nitc :: MType :: is_legal_in
Is the type legal in a givenmmodule
(with an optional anchor
)?
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.
nitc :: MType :: is_subtype
Return true ifself
is an subtype of sup
.
nitc :: MType :: is_subtype_invar
Return true ifself
is a invariant subtype of sup
.
nitc :: MType :: java_is_nit_object
Is this type opaque in Java? As so it is represented bynit.app.NitObject
.
nitc :: MClassType :: java_type=
nitc :: NitniCallback :: jni_methods_declaration
Returns the list of C functions to link with extern Java methods, as requirednitc :: MType :: jni_signature_alt
Type name appearing within JNI function names.nitc :: MEntity :: json_namespace
Returnself.full_name
as an object that can be serialized to json.
nitc :: MEntity :: line_separator
nitc :: MEntity :: linkto_text
Link to theself
with a specific text.
nitc :: MType :: lookup_bound
Resolve formal type to its verbatim bound.nitc :: MType :: lookup_fixed
Resolve the formal type to its simplest equivalent form.nitc :: MType :: mangled_cname
Representation of this type in mangled Cnitc :: MEntity :: mdoc_or_fallback
The documentation associated to the entity or their main nested entity.serialization :: Serializable :: msgpack_extra_array_items
Hook to request a larger than usual metadata arraycore :: Object :: native_class_name
The class name of the object in CString format.nitc :: MType :: need_anchor
Doesself
contain a virtual type or a formal generic parameter type?
nitc :: MGenericType :: need_anchor=
nitc :: MType :: needs_type_check
Does this parameter type needs to be checked before calling the method?core :: Object :: output_class_name
Display class name on stdout (debug only).mentity
nitc :: MEntity :: ratings_by_dimension
Get the ratings of adimension
nitc :: MType :: resolve_for
Replace formals generic types in self with resolved values inmtype
serialization :: Serializable :: serialize_msgpack
Serializeself
to MessagePack bytes
serialization :: Serializable :: serialize_to
Serializeself
to serializer
serialization :: Serializable :: serialize_to_json
Serializeself
to JSON
serialization :: Serializable :: serialize_to_or_delay
Accept references or force direct serialization (usingserialize_to
)
nitc :: MType :: signature_depth
nitc :: MEntity :: source_url
Render a HTML link for the MEntity locationnitc :: MType :: supertype_to
Return the supertype when adapted to a class.serialization :: Serializable :: to_pretty_json
Serializeself
to plain pretty JSON
nitc :: MGenericType :: to_s=
The short-name of the class, then the full-name of each type arguments within brackets.nitc :: MEntity :: tpl_module
Builds a dot UML package diagram entity fromself
v.enter_visit
on all nested entities.
nitc :: MClassType :: web_url=
nitc :: MEntity :: write_extra_doc
Extra auto documentation to append to thestream
nitc :: MEntity :: write_location
Location (file and line when available) of related declarations
# A type based on a generic class.
# A generic type a just a class with additional formal generic arguments.
class MGenericType
super MClassType
redef var arguments
# TODO: private init because strongly bounded to its mclass. see `mclass.get_mtype`
init
do
assert self.mclass.arity == arguments.length
self.need_anchor = false
for t in arguments do
if t.need_anchor then
self.need_anchor = true
break
end
end
self.to_s = "{mclass}[{arguments.join(", ")}]"
end
# The short-name of the class, then the full-name of each type arguments within brackets.
# Example: `"Map[String, List[Int]]"`
redef var to_s is noinit
# The full-name of the class, then the full-name of each type arguments within brackets.
# Example: `"core::Map[core::String, core::List[core::Int]]"`
redef var full_name is lazy do
var args = new Array[String]
for t in arguments do
args.add t.full_name
end
return "{mclass.full_name}[{args.join(", ")}]"
end
redef var c_name is lazy do
var res = mclass.c_name
# Note: because the arity is known, a prefix notation is enough
for t in arguments do
res += "__"
res += t.c_name
end
return res.to_s
end
redef var need_anchor is noinit
redef fun resolve_for(mtype, anchor, mmodule, cleanup_virtual)
do
if not need_anchor then return self
assert can_resolve_for(mtype, anchor, mmodule)
var types = new Array[MType]
for t in arguments do
types.add(t.resolve_for(mtype, anchor, mmodule, cleanup_virtual))
end
return mclass.get_mtype(types)
end
redef fun can_resolve_for(mtype, anchor, mmodule)
do
if not need_anchor then return true
for t in arguments do
if not t.can_resolve_for(mtype, anchor, mmodule) then return false
end
return true
end
redef fun is_ok
do
for t in arguments do if not t.is_ok then return false
return super
end
redef fun is_legal_in(mmodule, anchor)
do
var mtype
if need_anchor then
assert anchor != null
mtype = anchor_to(mmodule, anchor)
else
mtype = self
end
if not mtype.is_ok then return false
return mtype.is_subtype(mmodule, null, mtype.mclass.intro.bound_mtype)
end
redef fun depth
do
var dmax = 0
for a in self.arguments do
var d = a.depth
if d > dmax then dmax = d
end
return dmax + 1
end
redef fun length
do
var res = 1
for a in self.arguments do
res += a.length
end
return res
end
end
src/model/model.nit:1396,1--1503,3
redef class MGenericType
redef fun cs_signature(no_color) do
var tpl = new FlatBuffer
tpl.append mclass.name
tpl.append "["
for i in [0..arguments.length[ do
tpl.append arguments[i].cs_signature(no_color)
if i < arguments.length - 1 then tpl.append ", "
end
tpl.append "]"
return tpl.write_to_string
end
end
src/doc/templates/term_model.nit:230,1--242,3
redef class MGenericType
redef fun tpl_class(model) do
var t = new Template
t.add name.substring(0, name.index_of('['))
t.add "["
t.add arguments.first.tpl_class(model)
for i in [1 .. arguments.length[ do
t.add ", "
t.add arguments[i].tpl_class(model)
end
t.add "]"
return t
end
end
src/uml/uml_class.nit:180,1--193,3
redef class MGenericType
end
src/nitserial.nit:72,1--79,3
redef class MGenericType
redef fun html_signature(short) do
var lnk = html_link
var tpl = new Template
tpl.add new Link(lnk.href, mclass.name.html_escape, lnk.title)
tpl.add "["
for i in [0..arguments.length[ do
tpl.add arguments[i].html_signature(short)
if i < arguments.length - 1 then tpl.add ", "
end
tpl.add "]"
return tpl
end
end
src/doc/templates/html_model.nit:292,1--305,3