A type based on a class.

MClassType have properties (see has_mproperty).

Introduced properties

private var _api_url: String

nitc :: MClassType :: _api_url

private var _arguments: Array[MType]

nitc :: MClassType :: _arguments

The formal arguments of the type
private var _ctype: String

nitc :: MClassType :: _ctype

private var _java_type: String

nitc :: MClassType :: _java_type

private var _mclass: MClass

nitc :: MClassType :: _mclass

The associated class
private var _web_url: String

nitc :: MClassType :: _web_url

protected fun api_url=(api_url: String)

nitc :: MClassType :: api_url=

fun arguments: Array[MType]

nitc :: MClassType :: arguments

The formal arguments of the type
protected fun arguments=(arguments: Array[MType])

nitc :: MClassType :: arguments=

The formal arguments of the type
private fun collect_mclasses_cache=(collect_mclasses_cache: HashMap[MModule, Set[MClass]])

nitc :: MClassType :: collect_mclasses_cache=

private fun collect_mclasses_last_module=(collect_mclasses_last_module: nullable MModule)

nitc :: MClassType :: collect_mclasses_last_module=

private fun collect_mclasses_last_module_cache=(collect_mclasses_last_module_cache: Set[MClass])

nitc :: MClassType :: collect_mclasses_last_module_cache=

private fun collect_things(mmodule: MModule)

nitc :: MClassType :: collect_things

common implementation for collect_mclassdefs, collect_mclasses, and collect_mtypes.
protected fun ctype=(ctype: String)

nitc :: MClassType :: ctype=

protected fun is_c_primitive=(is_c_primitive: Bool)

nitc :: MClassType :: is_c_primitive=

protected fun java_type=(java_type: String)

nitc :: MClassType :: java_type=

fun mclass: MClass

nitc :: MClassType :: mclass

The associated class
protected fun mclass=(mclass: MClass)

nitc :: MClassType :: mclass=

The associated class
protected fun web_url=(web_url: String)

nitc :: MClassType :: web_url=

Redefined properties

redef type SELF: MClassType

nitc $ MClassType :: SELF

Type of this instance, automatically specialized in every class
redef fun anchor_to(mmodule: MModule, anchor: nullable MClassType): MClassType

nitc $ MClassType :: anchor_to

The base class type on which self is based
redef fun api_url: String

nitc :: api_base $ MClassType :: api_url

URL to self within the JSON api.
redef fun c_name: String

nitc $ MClassType :: c_name

A fully-qualified C-like identifier of this model entity.
redef fun call_arg_field: String

nitc :: on_demand_compiler $ MClassType :: call_arg_field

Field to store this type in the C structure nit_call_arg
redef fun can_resolve_for(mtype: MType, anchor: nullable MClassType, mmodule: MModule): Bool

nitc $ MClassType :: can_resolve_for

Can the type be resolved?
redef fun cname: String

nitc :: nitni_base $ MClassType :: cname

Representation of this type in pure C on the FFI extern side
redef fun cname_blind: String

nitc :: nitni_base $ MClassType :: cname_blind

Representation of this type in C for the internal of the system
redef fun cname_normal_class: String

nitc :: light_only $ MClassType :: cname_normal_class

Name of this type in C for normal classes (not extern and not primitive)
redef fun collect_mclassdefs(mmodule: MModule): Set[MClassDef]

nitc $ MClassType :: collect_mclassdefs

Compute all the classdefs inherited/imported.
redef fun collect_mclasses(mmodule: MModule): Set[MClass]

nitc $ MClassType :: collect_mclasses

Compute all the super-classes.
redef fun collect_mtypes(mmodule: MModule): Set[MClassType]

nitc $ MClassType :: collect_mtypes

Compute all the declared super-types.
redef fun compile_callback_to_java(mmodule: MModule, mainmodule: MModule, ccu: CCompilationUnit)

nitc :: java $ MClassType :: compile_callback_to_java

Compile C and Java code to implement this callback
redef fun complete_mdoc: nullable MDoc

nitc :: vim_autocomplete $ MClassType :: complete_mdoc

Doc to use in completion
redef fun cs_signature(no_color: nullable Bool): String

nitc :: term_model $ MClassType :: cs_signature

Returns self signature formatted for console.
redef fun ctype: String

nitc :: abstract_compiler $ MClassType :: ctype

Return the C type associated to a given Nit static type
redef fun ctype_extern: String

nitc :: abstract_compiler $ MClassType :: ctype_extern

C type outside of the compiler code and in boxes
redef fun ctypename: String

nitc :: abstract_compiler $ MClassType :: ctypename

Short name of the ctype to use in unions
redef fun full_name: String

nitc $ MClassType :: full_name

A fully-qualified name of this model entity.
redef fun infobox(v: HtmlightVisitor): HInfoBox

nitc :: htmlight $ MClassType :: infobox

An new infobox documenting the entity
redef fun is_c_primitive: Bool

nitc :: abstract_compiler $ MClassType :: is_c_primitive

Is the associated C type a primitive one?
redef fun is_cprimitive: Bool

nitc :: nitni_base $ MClassType :: is_cprimitive

Does this type have a primitive representation?
redef fun java_is_nit_object: Bool

nitc :: java $ MClassType :: java_is_nit_object

Is this type opaque in Java? As so it is represented by nit.app.NitObject.
redef fun java_type: String

nitc :: java $ MClassType :: java_type

Type name in Java
redef fun java_type: String

nitc :: java_compiler $ MClassType :: java_type

Return the Java type associated to a given Nit static type
redef fun jni_format: String

nitc :: java $ MClassType :: jni_format

JNI short type name (for signatures)
redef fun jni_methods_declaration(from_mmodule: MModule): Array[String]

nitc :: java $ MClassType :: jni_methods_declaration

Returns the list of C functions to link with extern Java methods, as required
redef fun jni_signature_alt: String

nitc :: java $ MClassType :: jni_signature_alt

Type name appearing within JNI function names.
redef fun jni_type: String

nitc :: java $ MClassType :: jni_type

JNI type name (in C)
redef fun linkto(v: HtmlightVisitor): HTMLTag

nitc :: htmlight $ MClassType :: linkto

A HTML version of to_s with hyper-links.
redef fun location: Location

nitc $ MClassType :: location

The origin of the definition.
redef fun mangled_cname: String

nitc :: nitni_base $ MClassType :: mangled_cname

Representation of this type in mangled C
redef fun mdoc_or_fallback: nullable MDoc

nitc $ MClassType :: mdoc_or_fallback

The documentation associated to the entity or their main nested entity.
redef fun model: Model

nitc $ MClassType :: model

A Model Entity has a direct link to its model
redef fun need_anchor: Bool

nitc $ MClassType :: need_anchor

Does self contain a virtual type or a formal generic parameter type?
redef fun related_mclasses(mmodule: MModule): Array[MClass]

nitc :: nitserial $ MClassType :: related_mclasses

List classes composing this type
redef fun resolve_for(mtype: MType, anchor: nullable MClassType, mmodule: MModule, cleanup_virtual: Bool): MClassType

nitc $ MClassType :: resolve_for

Replace formals generic types in self with resolved values in mtype
redef fun to_node(nodes: HashMap[MEntity, NeoNode], model_name: nullable String): NeoNode

nitc :: neo $ MClassType :: to_node

Build a NeoNode representing self.
redef fun to_s: String

nitc $ MClassType :: to_s

User readable representation of self.
redef fun tpl_class(model: UMLModel): Writable

nitc :: uml_class $ MClassType :: tpl_class

Generates a dot-compatible Writable UML Class diagram from self
redef fun web_url: String

nitc :: api_base $ MClassType :: web_url

URL to self within the web interface.
redef fun write_extra_doc(model: Model, mainmodule: MModule, stream: Writer)

nitc :: vim_autocomplete $ MClassType :: write_extra_doc

Extra auto documentation to append to the stream
redef fun write_location(mainmodule: MModule, stream: Writer)

nitc :: vim_autocomplete $ MClassType :: write_location

Location (file and line when available) of related declarations

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type MENTITY: SELF

nitc :: MEntity :: MENTITY

FIXME used to bypass RTA limitation on type resolution
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
private var _api_url: String

nitc :: MClassType :: _api_url

private var _arguments: Array[MType]

nitc :: MClassType :: _arguments

The formal arguments of the type
private var _as_nullable_cache: nullable MType

nitc :: MType :: _as_nullable_cache

private var _css_classes: Array[String]

nitc :: MEntity :: _css_classes

CSS classes used to decorate self
private var _ctype: String

nitc :: MClassType :: _ctype

private var _deprecation: nullable MDeprecationInfo

nitc :: MEntity :: _deprecation

Is the entity deprecated?
private var _examples: Array[MExample]

nitc :: MEntity :: _examples

Examples found for self
private var _html_full_name: String

nitc :: MEntity :: _html_full_name

The MEntity full_name escaped for HTML
private var _html_id: String

nitc :: MEntity :: _html_id

The MEntity unique ID in the HTML output
private var _html_name: String

nitc :: MEntity :: _html_name

The MEntity name escaped for HTML
private var _html_url: String

nitc :: MEntity :: _html_url

private var _html_url: String

nitc :: MEntity :: _html_url

The MEntity URL in the HTML output
private var _is_broken: Bool

nitc :: MEntity :: _is_broken

The indication that the entity did not pass some semantic verifications.
private var _is_fictive: Bool

nitc :: MEntity :: _is_fictive

Is self created for internal purpose?
private var _is_java_primitive: Bool

nitc :: MType :: _is_java_primitive

Is the associated Java type a primitive one?
private var _is_tagged: Bool

nitc :: MType :: _is_tagged

Are values of self tagged?
private var _is_test: Bool

nitc :: MEntity :: _is_test

Is self created for unit testing purpose?
private var _java_type: String

nitc :: MClassType :: _java_type

private var _mclass: MClass

nitc :: MClassType :: _mclass

The associated class
private var _mdoc: nullable MDoc

nitc :: MEntity :: _mdoc

The documentation associated to the entity
private var _mexample: nullable MExample

nitc :: MEntity :: _mexample

Return this entity as a MExample
private var _tag_value: Int

nitc :: MType :: _tag_value

The tag value of the type
private var _web_url: String

nitc :: MClassType :: _web_url

protected fun accept_json_serializer(v: JsonSerializer)

serialization :: Serializable :: accept_json_serializer

Refinable service to customize the serialization of this class to JSON
protected fun accept_msgpack_attribute_counter(v: AttributeCounter)

serialization :: Serializable :: accept_msgpack_attribute_counter

Hook to customize the behavior of the AttributeCounter
protected fun accept_msgpack_serializer(v: MsgPackSerializer)

serialization :: Serializable :: accept_msgpack_serializer

Hook to customize the serialization of this class to MessagePack
private fun add_doc_to_infobox(res: HInfoBox)

nitc :: MEntity :: add_doc_to_infobox

Append an entry for the doc in the given infobox
protected fun add_to_bundle(bundle: NativeBundle, key: JavaString)

serialization :: Serializable :: add_to_bundle

Called by []= to dynamically choose the appropriate method according
fun anchor_to(mmodule: MModule, anchor: nullable MClassType): MType

nitc :: MType :: anchor_to

The base class type on which self is based
fun api_url: String

nitc :: MEntity :: api_url

URL to self within the JSON api.
protected fun api_url=(api_url: String)

nitc :: MClassType :: api_url=

fun arguments: Array[MType]

nitc :: MClassType :: arguments

The formal arguments of the type
protected fun arguments=(arguments: Array[MType])

nitc :: MClassType :: arguments=

The formal arguments of the type
fun as_notnull: MType

nitc :: MType :: as_notnull

Returns the not null version of the type.
fun as_nullable: MType

nitc :: MType :: as_nullable

Return the nullable version of the type
private fun as_nullable_cache: nullable MType

nitc :: MType :: as_nullable_cache

private fun as_nullable_cache=(as_nullable_cache: nullable MType)

nitc :: MType :: as_nullable_cache=

abstract fun c_name: String

nitc :: MEntity :: c_name

A fully-qualified C-like identifier of this model entity.
private fun call_arg_field: String

nitc :: MType :: call_arg_field

Field to store this type in the C structure nit_call_arg
abstract fun can_resolve_for(mtype: MType, anchor: nullable MClassType, mmodule: MModule): Bool

nitc :: MType :: can_resolve_for

Can the type be resolved?
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun cname: String

nitc :: MType :: cname

Representation of this type in pure C on the FFI extern side
fun cname_blind: String

nitc :: MType :: cname_blind

Representation of this type in C for the internal of the system
protected fun cname_normal_class: String

nitc :: MType :: cname_normal_class

Name of this type in C for normal classes (not extern and not primitive)
fun collect_ancestors(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: MEntity :: collect_ancestors

Collect self ancestors (direct and indirect)
abstract fun collect_children(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: MEntity :: collect_children

Collect self children (direct descendants)
fun collect_descendants(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: MEntity :: collect_descendants

Collect self descendants (direct and direct)
fun collect_linearization(mainmodule: MModule): nullable Array[MEntity]

nitc :: MEntity :: collect_linearization

Collect self linearization anchored on mainmodule
abstract fun collect_mclassdefs(mmodule: MModule): Set[MClassDef]

nitc :: MType :: collect_mclassdefs

Compute all the classdefs inherited/imported.
abstract fun collect_mclasses(mmodule: MModule): Set[MClass]

nitc :: MType :: collect_mclasses

Compute all the super-classes.
private fun collect_mclasses_cache=(collect_mclasses_cache: HashMap[MModule, Set[MClass]])

nitc :: MClassType :: collect_mclasses_cache=

private fun collect_mclasses_last_module=(collect_mclasses_last_module: nullable MModule)

nitc :: MClassType :: collect_mclasses_last_module=

private fun collect_mclasses_last_module_cache=(collect_mclasses_last_module_cache: Set[MClass])

nitc :: MClassType :: collect_mclasses_last_module_cache=

fun collect_modifiers: Array[String]

nitc :: MEntity :: collect_modifiers

Collect modifier keywords like redef, private etc
abstract fun collect_mtypes(mmodule: MModule): Set[MClassType]

nitc :: MType :: collect_mtypes

Compute all the declared super-types.
abstract fun collect_parents(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: MEntity :: collect_parents

Collect self parents (direct ancestors)
private fun collect_things(mmodule: MModule)

nitc :: MClassType :: collect_things

common implementation for collect_mclassdefs, collect_mclasses, and collect_mtypes.
fun color: String

nitc :: MEntity :: color

fun compile_callback_to_java(mmodule: MModule, mainmodule: MModule, ccu: CCompilationUnit)

nitc :: NitniCallback :: compile_callback_to_java

Compile C and Java code to implement this callback
fun compile_callback_to_objc(mmodule: MModule, mainmodule: MModule)

nitc :: NitniCallback :: compile_callback_to_objc

Compile this callback to be callable from Objective-C
private fun complete_mdoc: nullable MDoc

nitc :: MEntity :: complete_mdoc

Doc to use in completion
private fun complete_name: String

nitc :: MEntity :: complete_name

Actual name used in completion
protected fun const_color=(const_color: String)

nitc :: MEntity :: const_color=

fun core_serialize_to(serializer: Serializer)

serialization :: Serializable :: core_serialize_to

Actual serialization of self to serializer
abstract fun create_ast_representation(astbuilder: nullable ASTBuilder): ANode

nitc :: MEntity :: create_ast_representation

Build a ANode from self
fun cs_comment(no_color: nullable Bool): nullable String

nitc :: MEntity :: cs_comment

Returns the comment of this MEntity formatted for console.
fun cs_declaration(no_color: nullable Bool): String

nitc :: MEntity :: cs_declaration

Returns the complete MEntity declaration (modifiers + name + signature).
fun cs_full_name(no_color: nullable Bool): String

nitc :: MEntity :: cs_full_name

Returns self.full_name formatted for console
fun cs_icon(no_color: nullable Bool): String

nitc :: MEntity :: cs_icon

Text icon to be displayed in front of the entity
fun cs_list_item(no_color: nullable Bool): String

nitc :: MEntity :: cs_list_item

Returns self as a list element that can be displayed in console.
fun cs_location(no_color: nullable Bool): String

nitc :: MEntity :: cs_location

Source code location of this MEntity formatted for console
fun cs_short_comment(no_color: nullable Bool): nullable String

nitc :: MEntity :: cs_short_comment

Returns the comment of this MEntity formatted for console.
fun cs_signature(no_color: nullable Bool): String

nitc :: MEntity :: cs_signature

Returns self signature formatted for console.
fun cs_source_code: String

nitc :: MEntity :: cs_source_code

Source code associated to this MEntity.
fun css_classes: Array[String]

nitc :: MEntity :: css_classes

CSS classes used to decorate self
protected fun css_classes=(css_classes: Array[String])

nitc :: MEntity :: css_classes=

CSS classes used to decorate self
fun ctype: String

nitc :: MType :: ctype

Return the C type associated to a given Nit static type
protected fun ctype=(ctype: String)

nitc :: MClassType :: ctype=

fun ctype_extern: String

nitc :: MType :: ctype_extern

C type outside of the compiler code and in boxes
fun ctypename: String

nitc :: MType :: ctypename

Short name of the ctype to use in unions
fun deprecation: nullable MDeprecationInfo

nitc :: MEntity :: deprecation

Is the entity deprecated?
fun deprecation=(deprecation: nullable MDeprecationInfo)

nitc :: MEntity :: deprecation=

Is the entity deprecated?
fun depth: Int

nitc :: MType :: depth

The depth of the type seen as a tree.
fun examples: Array[MExample]

nitc :: MEntity :: examples

Examples found for self
protected fun examples=(examples: Array[MExample])

nitc :: MEntity :: examples=

Examples found for self
init from_deserializer(deserializer: Deserializer)

serialization :: Serializable :: from_deserializer

Create an instance of this class from the deserializer
abstract fun full_name: String

nitc :: MEntity :: full_name

A fully-qualified name of this model entity.
private fun gen_arg_convert(template: Template, arg_name: String)

nitc :: MType :: gen_arg_convert

Write code in template to parse the argument arg_name to this parameter type
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun has_mproperty(mmodule: MModule, mproperty: MProperty): Bool

nitc :: MType :: has_mproperty

Is the property in self for a given module
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun hierarchy_poset(mainmodule: MModule, filter: nullable ModelFilter): POSet[MENTITY]

nitc :: MEntity :: hierarchy_poset

Build a poset representing self in it's own hierarchy
private fun href(v: NitlightVisitor): nullable String

nitc :: MEntity :: href

fun html_declaration: Template

nitc :: MEntity :: html_declaration

Returns the complete MEntity declaration decorated with HTML
fun html_full_name: String

nitc :: MEntity :: html_full_name

The MEntity full_name escaped for HTML
protected fun html_full_name=(html_full_name: String)

nitc :: MEntity :: html_full_name=

The MEntity full_name escaped for HTML
fun html_icon: BSIcon

nitc :: MEntity :: html_icon

An icon representative of the mentity
fun html_id: String

nitc :: MEntity :: html_id

The MEntity unique ID in the HTML output
protected fun html_id=(html_id: String)

nitc :: MEntity :: html_id=

The MEntity unique ID in the HTML output
fun html_name: String

nitc :: MEntity :: html_name

The MEntity name escaped for HTML
protected fun html_name=(html_name: String)

nitc :: MEntity :: html_name=

The MEntity name escaped for HTML
abstract fun html_namespace: Template

nitc :: MEntity :: html_namespace

Returns full_name decorated with HTML links
fun html_signature(short: nullable Bool): Template

nitc :: MEntity :: html_signature

Returns the MEntity signature decorated with HTML
fun html_url: String

nitc :: MEntity :: html_url

The MEntity URL in the HTML output
protected fun html_url=(html_url: String)

nitc :: MEntity :: html_url=

The MEntity URL in the HTML output
abstract fun infobox(v: HtmlightVisitor): HInfoBox

nitc :: HInfoBoxable :: infobox

An new infobox documenting the entity
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
fun is_broken: Bool

nitc :: MEntity :: is_broken

The indication that the entity did not pass some semantic verifications.
fun is_broken=(is_broken: Bool)

nitc :: MEntity :: is_broken=

The indication that the entity did not pass some semantic verifications.
fun is_c_primitive: Bool

nitc :: MType :: is_c_primitive

Is the associated C type a primitive one?
protected fun is_c_primitive=(is_c_primitive: Bool)

nitc :: MClassType :: is_c_primitive=

fun is_cprimitive: Bool

nitc :: MType :: is_cprimitive

Does this type have a primitive representation?
fun is_example: Bool

nitc :: MEntity :: is_example

Is self existing for an example purpose?
fun is_fictive: Bool

nitc :: MEntity :: is_fictive

Is self created for internal purpose?
fun is_fictive=(is_fictive: Bool)

nitc :: MEntity :: is_fictive=

Is self created for internal purpose?
fun is_java_primitive: Bool

nitc :: MType :: is_java_primitive

Is the associated Java type a primitive one?
protected fun is_java_primitive=(is_java_primitive: Bool)

nitc :: MType :: is_java_primitive=

Is the associated Java type a primitive one?
fun is_ok: Bool

nitc :: MType :: is_ok

Is the type a MErrorType or contains an MErrorType?
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun is_subtype(mmodule: MModule, anchor: nullable MClassType, sup: MType): Bool

nitc :: MType :: is_subtype

Return true if self is an subtype of sup.
fun is_subtype_invar(mmodule: MModule, anchor: nullable MClassType, sup: MType): Bool

nitc :: MType :: is_subtype_invar

Return true if self is a invariant subtype of sup.
fun is_tagged: Bool

nitc :: MType :: is_tagged

Are values of self tagged?
protected fun is_tagged=(is_tagged: Bool)

nitc :: MType :: is_tagged=

Are values of self tagged?
fun is_test: Bool

nitc :: MEntity :: is_test

Is self created for unit testing purpose?
fun is_test=(is_test: Bool)

nitc :: MEntity :: is_test=

Is self created for unit testing purpose?
private fun java_is_nit_object: Bool

nitc :: MType :: java_is_nit_object

Is this type opaque in Java? As so it is represented by nit.app.NitObject.
fun java_type: String

nitc :: MType :: java_type

Return the Java type associated to a given Nit static type
private fun java_type: String

nitc :: MType :: java_type

Type name in Java
protected fun java_type=(java_type: String)

nitc :: MClassType :: java_type=

private fun jname: String

nitc :: MEntity :: jname

A Java compatible name for self
private fun jni_format: String

nitc :: MType :: jni_format

JNI short type name (for signatures)
fun jni_methods_declaration(from_module: MModule): Array[String]

nitc :: NitniCallback :: jni_methods_declaration

Returns the list of C functions to link with extern Java methods, as required
private fun jni_signature_alt: String

nitc :: MType :: jni_signature_alt

Type name appearing within JNI function names.
private fun jni_type: String

nitc :: MType :: jni_type

JNI type name (in C)
abstract fun json_namespace: JsonNamespace

nitc :: MEntity :: json_namespace

Return self.full_name as an object that can be serialized to json.
fun length: Int

nitc :: MType :: length

The length of the type seen as a tree.
fun linkto(v: HtmlightVisitor): HTMLTag

nitc :: MEntity :: linkto

A HTML version of to_s with hyper-links.
fun linkto_text(v: HtmlightVisitor, text: String): HTMLTag

nitc :: MEntity :: linkto_text

Link to the self with a specific text.
fun location: Location

nitc :: MEntity :: location

The origin of the definition.
fun lookup_bound(mmodule: MModule, resolved_receiver: MType): MType

nitc :: MType :: lookup_bound

Resolve formal type to its verbatim bound.
fun lookup_fixed(mmodule: MModule, resolved_receiver: MType): MType

nitc :: MType :: lookup_fixed

Resolve the formal type to its simplest equivalent form.
private fun make_node(nodes: HashMap[MEntity, NeoNode], model_name: nullable String): NeoNode

nitc :: MEntity :: make_node

Make a new NeoNode based on mentity.
abstract fun mangled_cname: String

nitc :: MType :: mangled_cname

Representation of this type in mangled C
fun mclass: MClass

nitc :: MClassType :: mclass

The associated class
protected fun mclass=(mclass: MClass)

nitc :: MClassType :: mclass=

The associated class
fun mdoc: nullable MDoc

nitc :: MEntity :: mdoc

The documentation associated to the entity
fun mdoc=(mdoc: nullable MDoc)

nitc :: MEntity :: mdoc=

The documentation associated to the entity
fun mdoc_or_fallback: nullable MDoc

nitc :: MEntity :: mdoc_or_fallback

The documentation associated to the entity or their main nested entity.
private fun mentity_kind_rank: Int

nitc :: MEntity :: mentity_kind_rank

Compare MEntity class kind
fun mexample: nullable MExample

nitc :: MEntity :: mexample

Return this entity as a MExample
protected fun mexample=(mexample: nullable MExample)

nitc :: MEntity :: mexample=

Return this entity as a MExample
abstract fun model: Model

nitc :: MEntity :: model

A Model Entity has a direct link to its model
protected fun msgpack_extra_array_items: Int

serialization :: Serializable :: msgpack_extra_array_items

Hook to request a larger than usual metadata array
abstract fun name: String

nitc :: MEntity :: name

The short (unqualified) name of this model entity.
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
fun need_anchor: Bool

nitc :: MType :: need_anchor

Does self contain a virtual type or a formal generic parameter type?
private fun needs_type_check: Bool

nitc :: MType :: needs_type_check

Does this parameter type needs to be checked before calling the method?
abstract fun nitdoc_breadcrumbs: Array[MEntity]

nitc :: MEntity :: nitdoc_breadcrumbs

MEntities composing the breadcrumbs of a nitdoc page
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun ratings(config: NitwebConfig, user: nullable String): JsonObject

nitc :: MEntity :: ratings

Get the ratings of a mentity
fun ratings_by_dimension(config: NitwebConfig, dimension: String, user: nullable String): JsonObject

nitc :: MEntity :: ratings_by_dimension

Get the ratings of a dimension
private abstract fun related_mclasses(mmodule: MModule): Array[MClass]

nitc :: MType :: related_mclasses

List classes composing this type
abstract fun resolve_for(mtype: MType, anchor: nullable MClassType, mmodule: MModule, cleanup_virtual: Bool): MType

nitc :: MType :: resolve_for

Replace formals generic types in self with resolved values in mtype
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
fun serialize_msgpack(plain: nullable Bool): Bytes

serialization :: Serializable :: serialize_msgpack

Serialize self to MessagePack bytes
fun serialize_to(serializer: Serializer)

serialization :: Serializable :: serialize_to

Serialize self to serializer
fun serialize_to_json(plain: nullable Bool, pretty: nullable Bool): String

serialization :: Serializable :: serialize_to_json

Serialize self to JSON
private fun serialize_to_or_delay(v: Serializer)

serialization :: Serializable :: serialize_to_or_delay

Accept references or force direct serialization (using serialize_to)
private fun source_url(url_pattern: nullable String): String

nitc :: MEntity :: source_url

Render a HTML link for the MEntity location
fun supertype_to(mmodule: MModule, anchor: nullable MClassType, super_mclass: MClass): MClassType

nitc :: MType :: supertype_to

Return the supertype when adapted to a class.
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
fun tag_value: Int

nitc :: MType :: tag_value

The tag value of the type
protected fun tag_value=(tag_value: Int)

nitc :: MType :: tag_value=

The tag value of the type
fun to_dot_node: DotNode

nitc :: MEntity :: to_dot_node

Return self as a DotNode
fun to_json: String

serialization :: Serializable :: to_json

Serialize self to plain JSON
fun to_json_ref: MEntityRef

nitc :: MEntity :: to_json_ref

Return a new MEntityRef to self.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

private fun to_node(nodes: HashMap[MEntity, NeoNode], model_name: nullable String): NeoNode

nitc :: MEntity :: to_node

Build a NeoNode representing self.
fun to_pretty_json: String

serialization :: Serializable :: to_pretty_json

Serialize self to plain pretty JSON
fun to_s: String

core :: Object :: to_s

User readable representation of self.
abstract fun tpl_class(model: UMLModel): Writable

nitc :: MEntity :: tpl_class

Generates a dot-compatible Writable UML Class diagram from self
abstract fun tpl_module(model: UMLModel): Writable

nitc :: MEntity :: tpl_module

Builds a dot UML package diagram entity from self
fun undecorate: MType

nitc :: MType :: undecorate

Remove the base type of a decorated (proxy) type.
fun visibility: MVisibility

nitc :: MEntity :: visibility

The visibility of the MEntity.
fun visit_all(v: ModelVisitor)

nitc :: MEntity :: visit_all

Call v.enter_visit on all nested entities.
fun web_url: String

nitc :: MEntity :: web_url

URL to self within the web interface.
protected fun web_url=(web_url: String)

nitc :: MClassType :: web_url=

private fun write_doc(model: Model, mainmodule: MModule, stream: Writer)

nitc :: MEntity :: write_doc

private fun write_extra_doc(model: Model, mainmodule: MModule, stream: Writer)

nitc :: MEntity :: write_extra_doc

Extra auto documentation to append to the stream
private fun write_location(mainmodule: MModule, stream: Writer)

nitc :: MEntity :: write_location

Location (file and line when available) of related declarations
package_diagram nitc::MClassType MClassType nitc::MType MType nitc::MClassType->nitc::MType nitc::MEntity MEntity nitc::MType->nitc::MEntity nitc::NitniCallback NitniCallback nitc::MType->nitc::NitniCallback ...nitc::MEntity ... ...nitc::MEntity->nitc::MEntity ...nitc::NitniCallback ... ...nitc::NitniCallback->nitc::NitniCallback nitc::MGenericType MGenericType nitc::MGenericType->nitc::MClassType

Ancestors

interface HInfoBoxable

nitc :: HInfoBoxable

Model entity or whatever that can produce an infobox
abstract class MEntity

nitc :: MEntity

A named and possibly documented entity in the model.
interface NitniCallback

nitc :: NitniCallback

Classification for all nitni callbacks
interface Object

core :: Object

The root of the class hierarchy.
interface Serializable

serialization :: Serializable

Instances of this class can be passed to Serializer::serialize

Parents

abstract class MType

nitc :: MType

A global static type

Children

class MGenericType

nitc :: MGenericType

A type based on a generic class.

Class definitions

nitc $ MClassType
# A type based on a class.
#
# `MClassType` have properties (see `has_mproperty`).
class MClassType
	super MType

	# The associated class
	var mclass: MClass

	redef fun model do return self.mclass.intro_mmodule.model

	redef fun location do return mclass.location

	# TODO: private init because strongly bounded to its mclass. see `mclass.mclass_type`

	# The formal arguments of the type
	# ENSURE: `result.length == self.mclass.arity`
	var arguments = new Array[MType]

	redef fun to_s do return mclass.to_s

	redef fun full_name do return mclass.full_name

	redef fun c_name do return mclass.c_name

	redef fun need_anchor do return false

	redef fun anchor_to(mmodule, anchor): MClassType
	do
		return super.as(MClassType)
	end

	redef fun resolve_for(mtype: MType, anchor: nullable MClassType, mmodule: MModule, cleanup_virtual: Bool): MClassType do return self

	redef fun can_resolve_for(mtype, anchor, mmodule) do return true

	redef fun collect_mclassdefs(mmodule)
	do
		assert not self.need_anchor
		var cache = self.collect_mclassdefs_cache
		if not cache.has_key(mmodule) then
			self.collect_things(mmodule)
		end
		return cache[mmodule]
	end

	redef fun collect_mclasses(mmodule)
	do
		if collect_mclasses_last_module == mmodule then return collect_mclasses_last_module_cache
		assert not self.need_anchor
		var cache = self.collect_mclasses_cache
		if not cache.has_key(mmodule) then
			self.collect_things(mmodule)
		end
		var res = cache[mmodule]
		collect_mclasses_last_module = mmodule
		collect_mclasses_last_module_cache = res
		return res
	end

	private var collect_mclasses_last_module: nullable MModule = null
	private var collect_mclasses_last_module_cache: Set[MClass] is noinit

	redef fun collect_mtypes(mmodule)
	do
		assert not self.need_anchor
		var cache = self.collect_mtypes_cache
		if not cache.has_key(mmodule) then
			self.collect_things(mmodule)
		end
		return cache[mmodule]
	end

	# common implementation for `collect_mclassdefs`, `collect_mclasses`, and `collect_mtypes`.
	private fun collect_things(mmodule: MModule)
	do
		var res = new HashSet[MClassDef]
		var seen = new HashSet[MClass]
		var types = new HashSet[MClassType]
		seen.add(self.mclass)
		var todo = [self.mclass]
		while not todo.is_empty do
			var mclass = todo.pop
			#print "process {mclass}"
			for mclassdef in mclass.mclassdefs do
				if not mmodule.in_importation <= mclassdef.mmodule then continue
				#print "  process {mclassdef}"
				res.add(mclassdef)
				for supertype in mclassdef.supertypes do
					types.add(supertype)
					var superclass = supertype.mclass
					if seen.has(superclass) then continue
					#print "    add {superclass}"
					seen.add(superclass)
					todo.add(superclass)
				end
			end
		end
		collect_mclassdefs_cache[mmodule] = res
		collect_mclasses_cache[mmodule] = seen
		collect_mtypes_cache[mmodule] = types
	end

	private var collect_mclassdefs_cache = new HashMap[MModule, Set[MClassDef]]
	private var collect_mclasses_cache = new HashMap[MModule, Set[MClass]]
	private var collect_mtypes_cache = new HashMap[MModule, Set[MClassType]]

	redef fun mdoc_or_fallback do return mclass.mdoc_or_fallback
end
src/model/model.nit:1286,1--1394,3

nitc :: nitni_base $ MClassType
redef class MClassType
	redef fun cname
	do
		var name = mclass.name
		if name == "Bool" then return "int"
		if name == "Char" then return "uint32_t"
		if name == "Float" then return "double"
		if name == "Int" then return "long"
		if name == "Byte" then return "unsigned char"
		if name == "Int8" then return "int8_t"
		if name == "Int16" then return "int16_t"
		if name == "UInt16" then return "uint16_t"
		if name == "Int32" then return "int32_t"
		if name == "UInt32" then return "uint32_t"
		if name == "CString" then return "char*"
		if mclass.kind == extern_kind then
			var ctype = mclass.ctype
			assert ctype != null
			return ctype
		end
		return cname_normal_class
	end

	redef fun cname_blind do
		var name = mclass.name
		if name == "Bool" then return "int"
		if name == "Char" then return "uint32_t"
		if name == "Float" then return "double"
		if name == "Int" then return "long"
		if name == "Byte" then return "unsigned char"
		if name == "Int8" then return "int8_t"
		if name == "Int16" then return "int16_t"
		if name == "UInt16" then return "uint16_t"
		if name == "Int32" then return "int32_t"
		if name == "UInt32" then return "uint32_t"
		if name == "CString" then return "char*"
		if mclass.kind == extern_kind then return "void*"
		return super
	end

	redef fun mangled_cname do return mclass.name

	redef fun is_cprimitive do return mclass.kind == extern_kind or
			(once ["Bool", "Char", "Float", "Int", "CString",
			       "Byte", "Int8", "Int16", "UInt16", "Int32", "UInt32"]).has(mclass.name)
end
src/nitni/nitni_base.nit:91,1--136,3

nitc :: neo $ MClassType
redef class MClassType
	redef fun to_node(nodes: HashMap[MEntity, NeoNode], model_name: nullable String): NeoNode do
		if nodes.has_key(self) then return nodes[self]
		var node = super
		node.labels.add "MClassType"
		node.out_edges.add(new NeoEdge(node, "CLASS", mclass.to_node(nodes, model_name)))
		for arg in arguments do
			node.out_edges.add(new NeoEdge(node, "ARGUMENT", arg.to_node(nodes, model_name)))
		end
		return node
	end
end
src/neo.nit:880,1--891,3

nitc :: term_model $ MClassType
redef class MClassType
	redef fun cs_signature(no_color) do return name
end
src/doc/templates/term_model.nit:217,1--219,3

nitc :: vim_autocomplete $ MClassType
redef class MClassType
	redef fun write_extra_doc(model, mainmodule, stream)
	do
		# Super classes
		stream.write line_separator*2
		stream.write "## Class hierarchy"

		var direct_supers = [for s in mclass.in_hierarchy(mainmodule).direct_greaters do s.name]
		if not direct_supers.is_empty then
			alpha_comparator.sort direct_supers
			stream.write line_separator
			stream.write "* Direct super classes: "
			stream.write direct_supers.join(", ")
		end

		var supers = [for s in mclass.in_hierarchy(mainmodule).greaters do s.name]
		supers.remove mclass.name
		if not supers.is_empty then
			alpha_comparator.sort supers
			stream.write line_separator
			stream.write "* All super classes: "
			stream.write supers.join(", ")
		end

		var direct_subs = [for s in mclass.in_hierarchy(mainmodule).direct_smallers do s.name]
		if not direct_subs.is_empty then
			alpha_comparator.sort direct_subs
			stream.write line_separator
			stream.write "* Direct sub classes: "
			stream.write direct_subs.join(", ")
		end

		var subs = [for s in mclass.in_hierarchy(mainmodule).smallers do s.name]
		subs.remove mclass.name
		if not subs.is_empty then
			alpha_comparator.sort subs
			stream.write line_separator
			stream.write "* All sub classes: "
			stream.write subs.join(", ")
		end

		# List other properties
		stream.write line_separator*2
		stream.write "## Properties"
		stream.write line_separator
		var props = mclass.collect_accessible_mproperties(mainmodule).to_a
		alpha_comparator.sort props
		for prop in props do
			if mclass.name == "Object" or prop.intro.mclassdef.mclass.name != "Object" then
				prop.write_synopsis(mainmodule, stream)
			end
		end
	end

	redef fun complete_mdoc do return mclass.intro.mdoc

	redef fun write_location(mainmodule, stream)
	do
		for i in 2.times do stream.write line_separator
		stream.write "## Location of introduction and refinements"
		for c in mclass.mclassdefs do
			stream.write line_separator
			stream.write "* {c.location}"
		end
	end
end
src/doc/vim_autocomplete.nit:188,1--253,3

nitc :: uml_class $ MClassType
redef class MClassType
	redef fun tpl_class(model) do
		return name
	end
end
src/uml/uml_class.nit:174,1--178,3

nitc :: nitserial $ MClassType
redef class MClassType
	redef fun related_mclasses(mmodule) do return [mclass]
end
src/nitserial.nit:64,1--66,3

nitc :: java_compiler $ MClassType
redef class MClassType

	redef var java_type is lazy do
		if mclass.name == "Int" then
			return "int"
		else if mclass.name == "Bool" then
			return "boolean"
		else if mclass.name == "Char" then
			return "char"
		else if mclass.name == "Float" then
			return "double"
		else if mclass.name == "Byte" then
			return "byte"
		else if mclass.name == "CString" then
			return "String"
		else if mclass.name == "NativeArray" then
			return "Array"
		end
		return "RTVal"
	end
end
src/compiler/java_compiler.nit:1308,1--1328,3

nitc :: htmlight $ MClassType
redef class MClassType
	redef fun infobox(v)
	do
		var res = new HInfoBox(v, to_s)
		res.href = v.hrefto(mclass.intro)
		if not v.show_infobox then return res
		res.new_field("class").add mclass.intro.linkto(v)
		add_doc_to_infobox(res)
		return res
	end
	redef fun linkto(v)
	do
		return mclass.intro.linkto(v)
	end
end
src/htmlight.nit:575,1--589,3

nitc :: abstract_compiler $ MClassType
redef class MClassType

	redef var ctype is lazy do
		if mclass.name == "Int" then
			return "long"
		else if mclass.name == "Bool" then
			return "short int"
		else if mclass.name == "Char" then
			return "uint32_t"
		else if mclass.name == "Float" then
			return "double"
		else if mclass.name == "Int8" then
			return "int8_t"
		else if mclass.name == "Byte" then
			return "unsigned char"
		else if mclass.name == "Int16" then
			return "int16_t"
		else if mclass.name == "UInt16" then
			return "uint16_t"
		else if mclass.name == "Int32" then
			return "int32_t"
		else if mclass.name == "UInt32" then
			return "uint32_t"
		else if mclass.name == "CString" then
			return "char*"
		else if mclass.name == "NativeArray" then
			return "val*"
		else
			return "val*"
		end
	end

	redef var is_c_primitive is lazy do return ctype != "val*"

	redef fun ctype_extern: String
	do
		if mclass.kind == extern_kind then
			return "void*"
		else
			return ctype
		end
	end

	redef fun ctypename: String
	do
		if mclass.name == "Int" then
			return "l"
		else if mclass.name == "Bool" then
			return "s"
		else if mclass.name == "Char" then
			return "c"
		else if mclass.name == "Float" then
			return "d"
		else if mclass.name == "Int8" then
			return "i8"
		else if mclass.name == "Byte" then
			return "b"
		else if mclass.name == "Int16" then
			return "i16"
		else if mclass.name == "UInt16" then
			return "u16"
		else if mclass.name == "Int32" then
			return "i32"
		else if mclass.name == "UInt32" then
			return "u32"
		else if mclass.name == "CString" then
			return "str"
		else if mclass.name == "NativeArray" then
			#return "{self.arguments.first.ctype}*"
			return "val"
		else
			return "val"
		end
	end
end
src/compiler/abstract_compiler.nit:2448,1--2522,3

nitc :: java $ MClassType
redef class MClassType
	redef fun java_type
	do
		var ftype = mclass.ftype
		if ftype isa ForeignJavaType then return ftype.java_type.
			replace('/', ".").replace('$', ".").replace(' ', "").replace('\n',"")
		if mclass.name == "Bool" then return "boolean"
		if mclass.name == "Char" then return "int"
		if mclass.name == "Int" then return "long"
		if mclass.name == "Float" then return "double"
		if mclass.name == "Byte" then return "byte"
		if mclass.name == "Int8" then return "byte"
		if mclass.name == "Int16" then return "short"
		if mclass.name == "UInt16" then return "short"
		if mclass.name == "Int32" then return "int"
		if mclass.name == "UInt32" then return "int"
		return super
	end

	redef fun java_is_nit_object
	do
		var ftype = mclass.ftype
		if ftype isa ForeignJavaType then return false

		var java_primitives = once new HashSet[String].from(
			["Bool", "Char", "Int", "Float", "Byte", "Int8", "Int16", "UInt16", "Int32", "UInt32"])
		return not java_primitives.has(mclass.name)
	end

	redef fun jni_type
	do
		var ftype = mclass.ftype
		if ftype isa ForeignJavaType then return "jobject"
		if mclass.name == "Bool" then return "jboolean"
		if mclass.name == "Char" then return "jint"
		if mclass.name == "Int" then return "jlong"
		if mclass.name == "Float" then return "jdouble"
		if mclass.name == "Byte" then return "jbyte"
		if mclass.name == "Int8" then return "jbyte"
		if mclass.name == "Int16" then return "jshort"
		if mclass.name == "UInt16" then return "jshort"
		if mclass.name == "Int32" then return "jint"
		if mclass.name == "UInt32" then return "jint"
		return super
	end

	redef fun jni_format
	do
		var ftype = mclass.ftype
		if ftype isa ForeignJavaType then
			var jni_type = ftype.java_type.
				replace('.', "/").replace(' ', "").replace('\n', "")

			# Remove parameters of generic types
			loop
				var i = jni_type.last_index_of('<')
				if i >= 0 then
					var j = jni_type.index_of_from('>', i)
					if j == -1 then
						print "Error: missing closing '>' in extern Java type of \"{mclass.name}\""
						exit 1
					end
					jni_type = jni_type.substring(0, i) +
						jni_type.substring(j+1, jni_type.length)
				else break
			end

			# Change `float[]` to `[float`
			if jni_type.has('[') then
				var depth = jni_type.chars.count('[')
				var java_type = jni_type.replace("[]", "")
				var short

				if java_type == "boolean" then
					short = "Z"
				else if java_type == "byte" then
					short = "B"
				else if java_type == "char" then
					short = "C"
				else if java_type == "short" then
					short = "S"
				else if java_type == "int" then
					short = "I"
				else if java_type == "long" then
					short = "J"
				else if java_type == "float" then
					short = "F"
				else if java_type == "double" then
					short = "D"
				else
					short = "L{java_type};"
				end

				return "["*depth + short
			end

			return "L{jni_type};"
		end
		if mclass.name == "Bool" then return "Z"
		if mclass.name == "Char" then return "I"
		if mclass.name == "Int" then return "J"
		if mclass.name == "Float" then return "D"
		if mclass.name == "Byte" then return "B"
		if mclass.name == "Int8" then return "B"
		if mclass.name == "Int16" then return "S"
		if mclass.name == "UInt16" then return "S"
		if mclass.name == "Int32" then return "I"
		if mclass.name == "UInt32" then return "I"
		return super
	end

	redef fun jni_signature_alt
	do
		var ftype = mclass.ftype

		if ftype isa ForeignJavaType then return "Object"
		if mclass.name == "Bool" then return "Boolean"
		if mclass.name == "Char" then return "Int"
		if mclass.name == "Int" then return "Long"
		if mclass.name == "Float" then return "Double"
		if mclass.name == "Byte" then return "Byte"
		if mclass.name == "Int8" then return "Byte"
		if mclass.name == "Int16" then return "Short"
		if mclass.name == "UInt16" then return "Short"
		if mclass.name == "Int32" then return "Int"
		if mclass.name == "UInt32" then return "Int"
		return super
	end

	redef fun compile_callback_to_java(mmodule, mainmodule, ccu)
	do
		# Don't generate functions for reference counters on extern classes
		if mclass.ftype != null then return

		super
	end

	redef fun jni_methods_declaration(from_mmodule)
	do
		# Don't generate functions for reference counters on extern classes
		if mclass.ftype != null then return new Array[String]

		return super
	end
end
src/ffi/java.nit:610,1--754,3

nitc :: light_only $ MClassType
redef class MClassType
	redef fun cname_normal_class do return "void*"
end
src/compiler/compiler_ffi/light_only.nit:20,1--22,3

nitc :: html_model $ MClassType
redef class MClassType
	redef fun html_link(text, title) do return mclass.html_link(text, title)
end
src/doc/templates/html_model.nit:279,1--281,3

nitc :: on_demand_compiler $ MClassType
redef class MClassType
	redef fun call_arg_field
	do
		if is_cprimitive and mclass.kind != extern_kind then
			return "value_{name}"
		else return super
	end
end
src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit:385,1--392,3

nitc :: api_base $ MClassType
redef class MClassType
	redef var web_url = mclass.web_url is lazy
	redef var api_url = mclass.api_url is lazy
end
src/doc/api/api_base.nit:209,1--212,3