A Nit module is usually associated with a Nit source file.

Introduced properties

private var _array_class: MClass

nitc :: MModule :: _array_class

The primitive class Array
private var _bool_type: MClassType

nitc :: MModule :: _bool_type

The primitive type Bool
private var _byte_type: MClassType

nitc :: MModule :: _byte_type

The primitive type Byte
private var _c_name: String

nitc :: MModule :: _c_name

Return the name of the global C identifier associated to self.
private var _c_string_type: MClassType

nitc :: MModule :: _c_string_type

The primitive type CString
private var _cflags: MultiHashMap[String, String]

nitc :: MModule :: _cflags

Custom options for the C compiler (CFLAGS)
private var _char_type: MClassType

nitc :: MModule :: _char_type

The primitive type Char
private var _compiled_ffi_methods: HashSet[AMethPropdef]

nitc :: MModule :: _compiled_ffi_methods

Avoid the compile a ffi propdef more than once
private var _cpp_file: nullable CPPCompilationUnit

nitc :: MModule :: _cpp_file

private var _cppflags: MultiHashMap[String, String]

nitc :: MModule :: _cppflags

Custom options for the C++ compiler (CPPFLAGS)
private var _extra_java_files: nullable Array[ExtraJavaFile]

nitc :: MModule :: _extra_java_files

Extra Java files to compile with the module
private var _ffi_callbacks: HashMap[FFILanguage, Set[NitniCallback]]

nitc :: MModule :: _ffi_callbacks

Callbacks used by this module, classified by language
private var _ffi_ccu: nullable CCompilationUnit

nitc :: MModule :: _ffi_ccu

C compilation unit for the FFI files
private var _ffi_files: Array[ExternFile]

nitc :: MModule :: _ffi_files

All FFI files linked to this module
private var _first_real_mmodule: MModule

nitc :: MModule :: _first_real_mmodule

Get the non-is_fictive module on which self is based on.
private var _float_type: MClassType

nitc :: MModule :: _float_type

The primitive type Float
private var _full_name: String

nitc :: MModule :: _full_name

The canonical name of the module.
private var _generate_actor_submodule: Bool

nitc :: MModule :: _generate_actor_submodule

Do we need to generate the actor submodule ?
private var _header_dependencies: nullable HashSet[MModule]

nitc :: MModule :: _header_dependencies

Modules with public foreign code blocks (C header)
private var _html_url: String

nitc :: MModule :: _html_url

private var _in_importation: POSetElement[MModule]

nitc :: MModule :: _in_importation

The view of the module in the model.mmodule_importation_hierarchy
private var _int16_type: MClassType

nitc :: MModule :: _int16_type

The primitive type Int16
private var _int32_type: MClassType

nitc :: MModule :: _int32_type

The primitive type Int32
private var _int8_type: MClassType

nitc :: MModule :: _int8_type

The primitive type Int8
private var _int_type: MClassType

nitc :: MModule :: _int_type

The primitive type Int
private var _intro_mclasses: Array[MClass]

nitc :: MModule :: _intro_mclasses

All the classes introduced in the module
private var _is_generated: Bool

nitc :: MModule :: _is_generated

Is self a module generated by a tool?
private var _is_test: Bool

nitc :: MModule :: _is_test

private var _java_file: nullable JavaClassTemplate

nitc :: MModule :: _java_file

Java source file extracted from user FFI code with generated structure
private var _ldflags: MultiHashMap[String, String]

nitc :: MModule :: _ldflags

Custom options for the C linker (LDFLAGS)
private var _location: Location

nitc :: MModule :: _location

private var _mclassdefs: Array[MClassDef]

nitc :: MModule :: _mclassdefs

All the class definitions of the module
private var _mgroup: nullable MGroup

nitc :: MModule :: _mgroup

The group of module in the package if any
private var _model: Model

nitc :: MModule :: _model

The model considered
private var _name: String

nitc :: MModule :: _name

The short name of the module
private var _native_array_class: MClass

nitc :: MModule :: _native_array_class

The primitive class NativeArray
private var _nitni_ccu: nullable CCompilationUnit

nitc :: MModule :: _nitni_ccu

CCompilationUnit used for nitni signatures and code specific to the compiler
private var _objc_file: nullable ObjCCompilationUnit

nitc :: MModule :: _objc_file

private var _objc_imported_headers: HashSet[MModule]

nitc :: MModule :: _objc_imported_headers

Imported modules with public Objective-C code blocks
private var _object_type: MClassType

nitc :: MModule :: _object_type

The primitive type Object, the root of the class hierarchy
private var _pkgconfigs: Array[String]

nitc :: MModule :: _pkgconfigs

Additional libraries needed for the compilation
private var _pointer_type: MClassType

nitc :: MModule :: _pointer_type

The type Pointer, super class to all extern classes
private var _present_languages: HashSet[FFILanguage]

nitc :: MModule :: _present_languages

Foreign language used in this AModule
private var _serializable_type: MClassType

nitc :: MModule :: _serializable_type

Get the type of the class Serializable
private var _string_type: MClassType

nitc :: MModule :: _string_type

The primitive type String
private var _uint16_type: MClassType

nitc :: MModule :: _uint16_type

The primitive type UInt16
private var _uint32_type: MClassType

nitc :: MModule :: _uint32_type

The primitive type UInt32
private var _uses_ffi: Bool

nitc :: MModule :: _uses_ffi

Does this module uses the FFI?
fun add_mclassdef(mclassdef: MClassDef)

nitc :: MModule :: add_mclassdef

Adds another class definition in the modue.
private fun after_all: Array[MMethodDef]

nitc :: MModule :: after_all

Methods tagged with after_all at the module level (in Sys)
fun array_class: MClass

nitc :: MModule :: array_class

The primitive class Array
protected fun array_class=(array_class: MClass)

nitc :: MModule :: array_class=

The primitive class Array
fun array_type(elt_type: MType): MClassType

nitc :: MModule :: array_type

A primitive type of Array
private fun before_all: Array[MMethodDef]

nitc :: MModule :: before_all

Methods tagged with before_all at the module level (in Sys)
fun bool_type: MClassType

nitc :: MModule :: bool_type

The primitive type Bool
protected fun bool_type=(bool_type: MClassType)

nitc :: MModule :: bool_type=

The primitive type Bool
fun byte_type: MClassType

nitc :: MModule :: byte_type

The primitive type Byte
protected fun byte_type=(byte_type: MClassType)

nitc :: MModule :: byte_type=

The primitive type Byte
protected fun c_name=(c_name: String)

nitc :: MModule :: c_name=

Return the name of the global C identifier associated to self.
fun c_namespace_for(v: MVisibility): String

nitc :: MModule :: c_namespace_for

C identifier version of namespace_for.
fun c_string_type: MClassType

nitc :: MModule :: c_string_type

The primitive type CString
protected fun c_string_type=(c_string_type: MClassType)

nitc :: MModule :: c_string_type=

The primitive type CString
private fun callbacks_used_from_java=(callbacks_used_from_java: ForeignCallbackSet)

nitc :: MModule :: callbacks_used_from_java=

fun cflags: MultiHashMap[String, String]

nitc :: MModule :: cflags

Custom options for the C compiler (CFLAGS)
protected fun cflags=(cflags: MultiHashMap[String, String])

nitc :: MModule :: cflags=

Custom options for the C compiler (CFLAGS)
fun char_type: MClassType

nitc :: MModule :: char_type

The primitive type Char
protected fun char_type=(char_type: MClassType)

nitc :: MModule :: char_type=

The primitive type Char
private fun check_callback_compilation(cb: NitniCallback): Bool

nitc :: MModule :: check_callback_compilation

Returns true if callbacks has yet to be generated and register it as being generated
private fun check_man(toolcontext: ToolContext)

nitc :: MModule :: check_man

fun collect_imported_mclasses(mainmodule: MModule, filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_imported_mclasses

Collect all classes imported from self parents
fun collect_intro_attributes(filter: nullable ModelFilter): Set[MAttribute]

nitc :: MModule :: collect_intro_attributes

Collect attributes introduced in self
fun collect_intro_inits(filter: nullable ModelFilter): Set[MMethod]

nitc :: MModule :: collect_intro_inits

Collect all inits introduced in self
fun collect_intro_mclassdefs(filter: nullable ModelFilter): Set[MClassDef]

nitc :: MModule :: collect_intro_mclassdefs

Collect all class definitions introduced in self
fun collect_intro_mclasses(filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_intro_mclasses

Collect all classes introduced in self
fun collect_intro_methods(filter: nullable ModelFilter): Set[MMethod]

nitc :: MModule :: collect_intro_methods

Collect methods introduced in self (without inits)
fun collect_intro_mproperties(filter: nullable ModelFilter): Set[MProperty]

nitc :: MModule :: collect_intro_mproperties

Collect all properties introduced in self
fun collect_intro_vts(filter: nullable ModelFilter): Set[MVirtualTypeProp]

nitc :: MModule :: collect_intro_vts

Collect virtual types introduced in self
fun collect_linker_libs: nullable Array[String]

nitc :: MModule :: collect_linker_libs

Give requided addinional system libraries (as given to LD_LIBS)
fun collect_local_mclassdefs(filter: nullable ModelFilter): Set[MClassDef]

nitc :: MModule :: collect_local_mclassdefs

Collect all class definitions introduced and refined in self
fun collect_local_mclasses(filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_local_mclasses

Collect all classes introduced and refined in self
fun collect_redef_mclassdefs(filter: nullable ModelFilter): Set[MClassDef]

nitc :: MModule :: collect_redef_mclassdefs

Collect all class definitions refined in self
fun collect_redef_mclasses(filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_redef_mclasses

Collect all classes refined in self
fun collect_redef_mproperties(filter: nullable ModelFilter): Set[MProperty]

nitc :: MModule :: collect_redef_mproperties

Collect properties redefined in self
private fun compiled_callbacks=(compiled_callbacks: Array[NitniCallback])

nitc :: MModule :: compiled_callbacks=

private fun compiled_ffi_methods: HashSet[AMethPropdef]

nitc :: MModule :: compiled_ffi_methods

Avoid the compile a ffi propdef more than once
private fun compiled_ffi_methods=(compiled_ffi_methods: HashSet[AMethPropdef])

nitc :: MModule :: compiled_ffi_methods=

Avoid the compile a ffi propdef more than once
private fun cpp_file: nullable CPPCompilationUnit

nitc :: MModule :: cpp_file

private fun cpp_file=(cpp_file: nullable CPPCompilationUnit)

nitc :: MModule :: cpp_file=

fun cppflags: MultiHashMap[String, String]

nitc :: MModule :: cppflags

Custom options for the C++ compiler (CPPFLAGS)
protected fun cppflags=(cppflags: MultiHashMap[String, String])

nitc :: MModule :: cppflags=

Custom options for the C++ compiler (CPPFLAGS)
init defaultinit(model: Model, mgroup: nullable MGroup, name: String, location: Location)

nitc :: MModule :: defaultinit

private fun ensure_java_files

nitc :: MModule :: ensure_java_files

Set up the templates of the Java implementation class
private fun ensure_linking_callback_methods(ccu: CCompilationUnit)

nitc :: MModule :: ensure_linking_callback_methods

Compile C code to call JNI and link C callbacks implementations to Java extern methods
private fun extra_java_files: nullable Array[ExtraJavaFile]

nitc :: MModule :: extra_java_files

Extra Java files to compile with the module
private fun extra_java_files=(extra_java_files: nullable Array[ExtraJavaFile])

nitc :: MModule :: extra_java_files=

Extra Java files to compile with the module
fun ffi_callbacks: HashMap[FFILanguage, Set[NitniCallback]]

nitc :: MModule :: ffi_callbacks

Callbacks used by this module, classified by language
protected fun ffi_callbacks=(ffi_callbacks: HashMap[FFILanguage, Set[NitniCallback]])

nitc :: MModule :: ffi_callbacks=

Callbacks used by this module, classified by language
private fun ffi_ccu: nullable CCompilationUnit

nitc :: MModule :: ffi_ccu

C compilation unit for the FFI files
private fun ffi_ccu=(ffi_ccu: nullable CCompilationUnit)

nitc :: MModule :: ffi_ccu=

C compilation unit for the FFI files
fun ffi_files: Array[ExternFile]

nitc :: MModule :: ffi_files

All FFI files linked to this module
protected fun ffi_files=(ffi_files: Array[ExternFile])

nitc :: MModule :: ffi_files=

All FFI files linked to this module
fun filepath: nullable String

nitc :: MModule :: filepath

The path of the module source, if any
fun finalizable_type: nullable MClassType

nitc :: MModule :: finalizable_type

The primitive type Finalizable
fun finalize_ffi(c: AbstractCompiler)

nitc :: MModule :: finalize_ffi

Write FFI and nitni results to file
fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)

nitc :: MModule :: finalize_ffi_wrapper

Complete the compilation of the FFI code
fun first_real_mmodule: MModule

nitc :: MModule :: first_real_mmodule

Get the non-is_fictive module on which self is based on.
fun first_real_mmodule=(first_real_mmodule: MModule)

nitc :: MModule :: first_real_mmodule=

Get the non-is_fictive module on which self is based on.
fun flatten_mclass_hierarchy: POSet[MClass]

nitc :: MModule :: flatten_mclass_hierarchy

Full hierarchy of introduced and imported classes.
private fun flatten_mclass_hierarchy_cache=(flatten_mclass_hierarchy_cache: nullable POSet[MClass])

nitc :: MModule :: flatten_mclass_hierarchy_cache=

fun float_type: MClassType

nitc :: MModule :: float_type

The primitive type Float
protected fun float_type=(float_type: MClassType)

nitc :: MModule :: float_type=

The primitive type Float
private fun foreign_callbacks=(foreign_callbacks: ForeignCallbackSet)

nitc :: MModule :: foreign_callbacks=

protected fun full_name=(full_name: String)

nitc :: MModule :: full_name=

The canonical name of the module.
private fun gen_man(toolcontext: ToolContext)

nitc :: MModule :: gen_man

fun generate_actor_submodule: Bool

nitc :: MModule :: generate_actor_submodule

Do we need to generate the actor submodule ?
protected fun generate_actor_submodule=(generate_actor_submodule: Bool)

nitc :: MModule :: generate_actor_submodule=

Do we need to generate the actor submodule ?
fun get_primitive_class(name: String): MClass

nitc :: MModule :: get_primitive_class

Force to get the primitive class named name or abort
private fun has_man: Bool

nitc :: MModule :: has_man

Does self have a manpage?
fun has_mclass(mclass: MClass): Bool

nitc :: MModule :: has_mclass

Does the current module has a given class mclass?
private fun has_public_objc_header=(has_public_objc_header: Bool)

nitc :: MModule :: has_public_objc_header=

fun header_dependencies: nullable HashSet[MModule]

nitc :: MModule :: header_dependencies

Modules with public foreign code blocks (C header)
protected fun header_dependencies=(header_dependencies: nullable HashSet[MModule])

nitc :: MModule :: header_dependencies=

Modules with public foreign code blocks (C header)
private fun impl_java_class_name: String

nitc :: MModule :: impl_java_class_name

Name of the generated Java class where to store all implementation methods of this module
fun in_importation: POSetElement[MModule]

nitc :: MModule :: in_importation

The view of the module in the model.mmodule_importation_hierarchy
protected fun in_importation=(in_importation: POSetElement[MModule])

nitc :: MModule :: in_importation=

The view of the module in the model.mmodule_importation_hierarchy
private fun insert_compiler_options

nitc :: MModule :: insert_compiler_options

Tell the C compiler where to find jni.h and how to link with libjvm
fun int16_type: MClassType

nitc :: MModule :: int16_type

The primitive type Int16
protected fun int16_type=(int16_type: MClassType)

nitc :: MModule :: int16_type=

The primitive type Int16
fun int32_type: MClassType

nitc :: MModule :: int32_type

The primitive type Int32
protected fun int32_type=(int32_type: MClassType)

nitc :: MModule :: int32_type=

The primitive type Int32
fun int8_type: MClassType

nitc :: MModule :: int8_type

The primitive type Int8
protected fun int8_type=(int8_type: MClassType)

nitc :: MModule :: int8_type=

The primitive type Int8
fun int_type: MClassType

nitc :: MModule :: int_type

The primitive type Int
protected fun int_type=(int_type: MClassType)

nitc :: MModule :: int_type=

The primitive type Int
fun intro_mclasses: Array[MClass]

nitc :: MModule :: intro_mclasses

All the classes introduced in the module
protected fun intro_mclasses=(intro_mclasses: Array[MClass])

nitc :: MModule :: intro_mclasses=

All the classes introduced in the module
private fun intrude_mmodules=(intrude_mmodules: HashSet[MModule])

nitc :: MModule :: intrude_mmodules=

fun is_generated: Bool

nitc :: MModule :: is_generated

Is self a module generated by a tool?
fun is_generated=(is_generated: Bool)

nitc :: MModule :: is_generated=

Is self a module generated by a tool?
fun is_visible(intro_mmodule: MModule, visibility: MVisibility): Bool

nitc :: MModule :: is_visible

Return true if a class or a property introduced in intro_mmodule with a visibility of visibility is visible in self.
fun java_file: nullable JavaClassTemplate

nitc :: MModule :: java_file

Java source file extracted from user FFI code with generated structure
protected fun java_file=(java_file: nullable JavaClassTemplate)

nitc :: MModule :: java_file=

Java source file extracted from user FFI code with generated structure
fun ldflags: MultiHashMap[String, String]

nitc :: MModule :: ldflags

Custom options for the C linker (LDFLAGS)
protected fun ldflags=(ldflags: MultiHashMap[String, String])

nitc :: MModule :: ldflags=

Custom options for the C linker (LDFLAGS)
fun linearize_mclassdefs(mclassdefs: Array[MClassDef])

nitc :: MModule :: linearize_mclassdefs

Sort a given array of class definitions using the linearization order of the module
fun linearize_mclasses(mclasses: Array[MClass])

nitc :: MModule :: linearize_mclasses

Sort a given array of classes using the linearization order of the module
fun linearize_mpropdefs(mpropdefs: Array[MPropDef])

nitc :: MModule :: linearize_mpropdefs

Sort a given array of property definitions using the linearization order of the module
fun load(modelbuilder: ModelBuilder): nullable AModule

nitc :: MModule :: load

Parse and process importation of a given MModule.
private fun local_target_platform=(local_target_platform: nullable Platform)

nitc :: MModule :: local_target_platform=

fun location=(location: Location)

nitc :: MModule :: location=

private fun make_module(toolcontext: ToolContext): Bool

nitc :: MModule :: make_module

private fun makefile_path: nullable String

nitc :: MModule :: makefile_path

private fun man_path: nullable String

nitc :: MModule :: man_path

private fun mclassdef_sorter=(mclassdef_sorter: MClassDefSorter)

nitc :: MModule :: mclassdef_sorter=

fun mclassdefs: Array[MClassDef]

nitc :: MModule :: mclassdefs

All the class definitions of the module
protected fun mclassdefs=(mclassdefs: Array[MClassDef])

nitc :: MModule :: mclassdefs=

All the class definitions of the module
fun mgroup: nullable MGroup

nitc :: MModule :: mgroup

The group of module in the package if any
protected fun mgroup=(mgroup: nullable MGroup)

nitc :: MModule :: mgroup=

The group of module in the package if any
protected fun model=(model: Model)

nitc :: MModule :: model=

The model considered
fun mpackage: nullable MPackage

nitc :: MModule :: mpackage

The package of the module if any
private fun mpropdef_sorter=(mpropdef_sorter: MPropDefSorter)

nitc :: MModule :: mpropdef_sorter=

protected fun name=(name: String)

nitc :: MModule :: name=

The short name of the module
fun namespace_for(v: MVisibility): String

nitc :: MModule :: namespace_for

The namespace used for entities according to their visibility v.
fun native_array_class: MClass

nitc :: MModule :: native_array_class

The primitive class NativeArray
protected fun native_array_class=(native_array_class: MClass)

nitc :: MModule :: native_array_class=

The primitive class NativeArray
fun native_array_type(elt_type: MType): MClassType

nitc :: MModule :: native_array_type

A primitive type of NativeArray
protected fun nitdoc_breadcrumbs=(nitdoc_breadcrumbs: Array[MEntity])

nitc :: MModule :: nitdoc_breadcrumbs=

fun nitni_ccu: nullable CCompilationUnit

nitc :: MModule :: nitni_ccu

CCompilationUnit used for nitni signatures and code specific to the compiler
protected fun nitni_ccu=(nitni_ccu: nullable CCompilationUnit)

nitc :: MModule :: nitni_ccu=

CCompilationUnit used for nitni signatures and code specific to the compiler
private fun nmodule(v: AbstractCompilerVisitor): nullable AModule

nitc :: MModule :: nmodule

private fun ns_for(visibility: MVisibility): JsonNamespace

nitc :: MModule :: ns_for

private fun objc_file: nullable ObjCCompilationUnit

nitc :: MModule :: objc_file

private fun objc_file=(objc_file: nullable ObjCCompilationUnit)

nitc :: MModule :: objc_file=

fun objc_imported_headers: HashSet[MModule]

nitc :: MModule :: objc_imported_headers

Imported modules with public Objective-C code blocks
protected fun objc_imported_headers=(objc_imported_headers: HashSet[MModule])

nitc :: MModule :: objc_imported_headers=

Imported modules with public Objective-C code blocks
fun object_type: MClassType

nitc :: MModule :: object_type

The primitive type Object, the root of the class hierarchy
protected fun object_type=(object_type: MClassType)

nitc :: MModule :: object_type=

The primitive type Object, the root of the class hierarchy
fun parse(modelbuilder: ModelBuilder): nullable AModule

nitc :: MModule :: parse

Force the parsing of the module using modelbuilder.
fun pkgconfigs: Array[String]

nitc :: MModule :: pkgconfigs

Additional libraries needed for the compilation
protected fun pkgconfigs=(pkgconfigs: Array[String])

nitc :: MModule :: pkgconfigs=

Additional libraries needed for the compilation
fun pointer_type: MClassType

nitc :: MModule :: pointer_type

The type Pointer, super class to all extern classes
protected fun pointer_type=(pointer_type: MClassType)

nitc :: MModule :: pointer_type=

The type Pointer, super class to all extern classes
private fun present_languages: HashSet[FFILanguage]

nitc :: MModule :: present_languages

Foreign language used in this AModule
private fun present_languages=(present_languages: HashSet[FFILanguage])

nitc :: MModule :: present_languages=

Foreign language used in this AModule
private fun private_mmodules=(private_mmodules: HashSet[MModule])

nitc :: MModule :: private_mmodules=

fun properties(mclass: MClass): Set[MProperty]

nitc :: MModule :: properties

All MProperty associated to all MClassDef of mclass
private fun properties_cache=(properties_cache: Map[MClass, Set[MProperty]])

nitc :: MModule :: properties_cache=

private fun public_mmodules=(public_mmodules: HashSet[MModule])

nitc :: MModule :: public_mmodules=

fun serializable_type: MClassType

nitc :: MModule :: serializable_type

Get the type of the class Serializable
protected fun serializable_type=(serializable_type: MClassType)

nitc :: MModule :: serializable_type=

Get the type of the class Serializable
fun set_imported_mmodules(imported_mmodules: Array[MModule])

nitc :: MModule :: set_imported_mmodules

Register the imported modules (ie "import some_module") and packages importation graph
fun set_visibility_for(m: MModule, v: MVisibility)

nitc :: MModule :: set_visibility_for

Set the visibility of an imported module
fun string_type: MClassType

nitc :: MModule :: string_type

The primitive type String
protected fun string_type=(string_type: MClassType)

nitc :: MModule :: string_type=

The primitive type String
private fun stub_man(toolcontext: ToolContext): nullable String

nitc :: MModule :: stub_man

fun sys_type: nullable MClassType

nitc :: MModule :: sys_type

The primitive type Sys, the main type of the program, if any
fun target_platform: nullable Platform

nitc :: MModule :: target_platform

Recursively get the platform targeted by this module or imported modules
fun try_get_primitive_method(name: String, recv: MClass): nullable MMethod

nitc :: MModule :: try_get_primitive_method

Try to get the primitive method named name on the type recv
fun uint16_type: MClassType

nitc :: MModule :: uint16_type

The primitive type UInt16
protected fun uint16_type=(uint16_type: MClassType)

nitc :: MModule :: uint16_type=

The primitive type UInt16
fun uint32_type: MClassType

nitc :: MModule :: uint32_type

The primitive type UInt32
protected fun uint32_type=(uint32_type: MClassType)

nitc :: MModule :: uint32_type=

The primitive type UInt32
protected fun unsafe_update_hierarchy_cache(mclassdef: MClassDef)

nitc :: MModule :: unsafe_update_hierarchy_cache

Adds a class definition inside flatten_mclass_hierarchy_cache without
fun uses_ffi: Bool

nitc :: MModule :: uses_ffi

Does this module uses the FFI?
protected fun uses_ffi=(uses_ffi: Bool)

nitc :: MModule :: uses_ffi=

Does this module uses the FFI?
fun visibility_for(m: MModule): MVisibility

nitc :: MModule :: visibility_for

Return the visibility level of an imported module m

Redefined properties

redef type SELF: MModule

nitc $ MModule :: SELF

Type of this instance, automatically specialized in every class
redef fun c_name: String

nitc $ MModule :: c_name

Return the name of the global C identifier associated to self.
redef fun collect_ancestors(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: model_collect $ MModule :: collect_ancestors

Collect all modules directly imported by self
redef fun collect_children(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: model_collect $ MModule :: collect_children

Collect all modules that directly import self
redef fun collect_descendants(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: model_collect $ MModule :: collect_descendants

Collect all module descendants of self (direct and transitive imports)
redef fun collect_linker_libs: nullable Array[String]

nitc :: light $ MModule :: collect_linker_libs

Give requided addinional system libraries (as given to LD_LIBS)
redef fun collect_modifiers: Array[String]

nitc :: model_collect $ MModule :: collect_modifiers

Collect modifier keywords like redef, private etc
redef fun collect_parents(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: model_collect $ MModule :: collect_parents

Collect all modules directly imported by self
redef fun finalize_ffi(compiler: AbstractCompiler)

nitc :: light $ MModule :: finalize_ffi

Write FFI and nitni results to file
redef fun finalize_ffi(compiler: AbstractCompiler)

nitc :: compiler_ffi $ MModule :: finalize_ffi

Write FFI and nitni results to file
redef fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)

nitc :: ffi $ MModule :: finalize_ffi_wrapper

Complete the compilation of the FFI code
redef fun full_name: String

nitc $ MModule :: full_name

The canonical name of the module.
redef fun href(v: NitlightVisitor): nullable String

nitc :: nitlight $ MModule :: href

redef fun html_icon: BSIcon

nitc :: html_model $ MModule :: html_icon

An icon representative of the mentity
redef fun html_namespace: Template

nitc :: html_model $ MModule :: html_namespace

Returns full_name decorated with HTML links
redef fun html_url: String

nitc :: static_html $ MModule :: html_url

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

nitc :: static_html $ MModule :: html_url=

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

nitc :: htmlight $ MModule :: infobox

An new infobox documenting the entity
redef init init

nitc $ MModule :: init

Create a new empty module and register it to a model
redef fun is_test: Bool

nitc :: parse_annotations $ MModule :: is_test

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

nitc :: parse_annotations $ MModule :: is_test=

Is self created for unit testing purpose?
redef fun json_namespace: JsonNamespace

nitc :: json_model $ MModule :: json_namespace

Return self.full_name as an object that can be serialized to json.
redef fun linkto(v: HtmlightVisitor): HTMLTag

nitc :: htmlight $ MModule :: linkto

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

nitc $ MModule :: location

The origin of the definition.
redef fun mentity_kind_rank: Int

nitc :: model_index $ MModule :: mentity_kind_rank

Compare MEntity class kind
redef fun model: Model

nitc $ MModule :: model

The model considered
redef fun name: String

nitc $ MModule :: name

The short name of the module
redef fun nitdoc_breadcrumbs: Array[MEntity]

nitc :: static_base $ MModule :: nitdoc_breadcrumbs

MEntities composing the breadcrumbs of a nitdoc page
redef fun parent_concern: nullable MConcern

nitc $ MModule :: parent_concern

The concern that contains self or null if self is the root of the concern hierarchy
redef fun to_dot_node: DotNode

nitc :: commands_graph $ MModule :: to_dot_node

Return self as a DotNode
redef fun to_node(nodes: HashMap[MEntity, NeoNode], model_name: nullable String): NeoNode

nitc :: neo $ MModule :: to_node

Build a NeoNode representing self.
redef fun to_s: String

nitc $ MModule :: to_s

Alias for name
redef fun tpl_module(model: UMLModel): Writable

nitc :: uml_module $ MModule :: tpl_module

Builds a dot UML package diagram entity from self
redef fun visit_all(v: ModelVisitor)

nitc :: model_visitor $ MModule :: visit_all

Visit all the classes and class definitions of the module.
redef fun write_extra_doc(model: Model, mainmodule: MModule, stream: Writer)

nitc :: vim_autocomplete $ MModule :: write_extra_doc

Extra auto documentation to append to the stream

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 _annotations: Set[String]

nitc :: AnnotatedMEntity :: _annotations

Names of the annotations found on self declaration
private var _array_class: MClass

nitc :: MModule :: _array_class

The primitive class Array
private var _bool_type: MClassType

nitc :: MModule :: _bool_type

The primitive type Bool
private var _byte_type: MClassType

nitc :: MModule :: _byte_type

The primitive type Byte
private var _c_name: String

nitc :: MModule :: _c_name

Return the name of the global C identifier associated to self.
private var _c_string_type: MClassType

nitc :: MModule :: _c_string_type

The primitive type CString
private var _cflags: MultiHashMap[String, String]

nitc :: MModule :: _cflags

Custom options for the C compiler (CFLAGS)
private var _char_type: MClassType

nitc :: MModule :: _char_type

The primitive type Char
private var _compiled_ffi_methods: HashSet[AMethPropdef]

nitc :: MModule :: _compiled_ffi_methods

Avoid the compile a ffi propdef more than once
private var _cpp_file: nullable CPPCompilationUnit

nitc :: MModule :: _cpp_file

private var _cppflags: MultiHashMap[String, String]

nitc :: MModule :: _cppflags

Custom options for the C++ compiler (CPPFLAGS)
private var _css_classes: Array[String]

nitc :: MEntity :: _css_classes

CSS classes used to decorate self
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 _extra_java_files: nullable Array[ExtraJavaFile]

nitc :: MModule :: _extra_java_files

Extra Java files to compile with the module
private var _ffi_callbacks: HashMap[FFILanguage, Set[NitniCallback]]

nitc :: MModule :: _ffi_callbacks

Callbacks used by this module, classified by language
private var _ffi_ccu: nullable CCompilationUnit

nitc :: MModule :: _ffi_ccu

C compilation unit for the FFI files
private var _ffi_files: Array[ExternFile]

nitc :: MModule :: _ffi_files

All FFI files linked to this module
private var _first_real_mmodule: MModule

nitc :: MModule :: _first_real_mmodule

Get the non-is_fictive module on which self is based on.
private var _float_type: MClassType

nitc :: MModule :: _float_type

The primitive type Float
private var _full_name: String

nitc :: MModule :: _full_name

The canonical name of the module.
private var _generate_actor_submodule: Bool

nitc :: MModule :: _generate_actor_submodule

Do we need to generate the actor submodule ?
private var _header_dependencies: nullable HashSet[MModule]

nitc :: MModule :: _header_dependencies

Modules with public foreign code blocks (C header)
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 :: MModule :: _html_url

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 _in_importation: POSetElement[MModule]

nitc :: MModule :: _in_importation

The view of the module in the model.mmodule_importation_hierarchy
private var _int16_type: MClassType

nitc :: MModule :: _int16_type

The primitive type Int16
private var _int32_type: MClassType

nitc :: MModule :: _int32_type

The primitive type Int32
private var _int8_type: MClassType

nitc :: MModule :: _int8_type

The primitive type Int8
private var _int_type: MClassType

nitc :: MModule :: _int_type

The primitive type Int
private var _intro_mclasses: Array[MClass]

nitc :: MModule :: _intro_mclasses

All the classes introduced in the module
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_generated: Bool

nitc :: MModule :: _is_generated

Is self a module generated by a tool?
private var _is_test: Bool

nitc :: MModule :: _is_test

private var _is_test: Bool

nitc :: MEntity :: _is_test

Is self created for unit testing purpose?
private var _java_file: nullable JavaClassTemplate

nitc :: MModule :: _java_file

Java source file extracted from user FFI code with generated structure
private var _ldflags: MultiHashMap[String, String]

nitc :: MModule :: _ldflags

Custom options for the C linker (LDFLAGS)
private var _location: Location

nitc :: MModule :: _location

private var _mclassdefs: Array[MClassDef]

nitc :: MModule :: _mclassdefs

All the class definitions of the module
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 _mgroup: nullable MGroup

nitc :: MModule :: _mgroup

The group of module in the package if any
private var _model: Model

nitc :: MModule :: _model

The model considered
private var _name: String

nitc :: MModule :: _name

The short name of the module
private var _native_array_class: MClass

nitc :: MModule :: _native_array_class

The primitive class NativeArray
private var _nitni_ccu: nullable CCompilationUnit

nitc :: MModule :: _nitni_ccu

CCompilationUnit used for nitni signatures and code specific to the compiler
private var _objc_file: nullable ObjCCompilationUnit

nitc :: MModule :: _objc_file

private var _objc_imported_headers: HashSet[MModule]

nitc :: MModule :: _objc_imported_headers

Imported modules with public Objective-C code blocks
private var _object_type: MClassType

nitc :: MModule :: _object_type

The primitive type Object, the root of the class hierarchy
private var _pkgconfigs: Array[String]

nitc :: MModule :: _pkgconfigs

Additional libraries needed for the compilation
private var _pointer_type: MClassType

nitc :: MModule :: _pointer_type

The type Pointer, super class to all extern classes
private var _present_languages: HashSet[FFILanguage]

nitc :: MModule :: _present_languages

Foreign language used in this AModule
private var _serializable_type: MClassType

nitc :: MModule :: _serializable_type

Get the type of the class Serializable
private var _string_type: MClassType

nitc :: MModule :: _string_type

The primitive type String
private var _uint16_type: MClassType

nitc :: MModule :: _uint16_type

The primitive type UInt16
private var _uint32_type: MClassType

nitc :: MModule :: _uint32_type

The primitive type UInt32
private var _uses_ffi: Bool

nitc :: MModule :: _uses_ffi

Does this module uses the FFI?
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
fun add_mclassdef(mclassdef: MClassDef)

nitc :: MModule :: add_mclassdef

Adds another class definition in the modue.
protected fun add_to_bundle(bundle: NativeBundle, key: JavaString)

serialization :: Serializable :: add_to_bundle

Called by []= to dynamically choose the appropriate method according
private fun after_all: Array[MMethodDef]

nitc :: MModule :: after_all

Methods tagged with after_all at the module level (in Sys)
fun annotations: Set[String]

nitc :: AnnotatedMEntity :: annotations

Names of the annotations found on self declaration
protected fun annotations=(annotations: Set[String])

nitc :: AnnotatedMEntity :: annotations=

Names of the annotations found on self declaration
fun api_url: String

nitc :: MEntity :: api_url

URL to self within the JSON api.
fun array_class: MClass

nitc :: MModule :: array_class

The primitive class Array
protected fun array_class=(array_class: MClass)

nitc :: MModule :: array_class=

The primitive class Array
fun array_type(elt_type: MType): MClassType

nitc :: MModule :: array_type

A primitive type of Array
private fun before_all: Array[MMethodDef]

nitc :: MModule :: before_all

Methods tagged with before_all at the module level (in Sys)
fun bool_type: MClassType

nitc :: MModule :: bool_type

The primitive type Bool
protected fun bool_type=(bool_type: MClassType)

nitc :: MModule :: bool_type=

The primitive type Bool
fun byte_type: MClassType

nitc :: MModule :: byte_type

The primitive type Byte
protected fun byte_type=(byte_type: MClassType)

nitc :: MModule :: byte_type=

The primitive type Byte
abstract fun c_name: String

nitc :: MEntity :: c_name

A fully-qualified C-like identifier of this model entity.
protected fun c_name=(c_name: String)

nitc :: MModule :: c_name=

Return the name of the global C identifier associated to self.
fun c_namespace_for(v: MVisibility): String

nitc :: MModule :: c_namespace_for

C identifier version of namespace_for.
fun c_string_type: MClassType

nitc :: MModule :: c_string_type

The primitive type CString
protected fun c_string_type=(c_string_type: MClassType)

nitc :: MModule :: c_string_type=

The primitive type CString
private fun callbacks_used_from_java=(callbacks_used_from_java: ForeignCallbackSet)

nitc :: MModule :: callbacks_used_from_java=

fun cflags: MultiHashMap[String, String]

nitc :: MModule :: cflags

Custom options for the C compiler (CFLAGS)
protected fun cflags=(cflags: MultiHashMap[String, String])

nitc :: MModule :: cflags=

Custom options for the C compiler (CFLAGS)
fun char_type: MClassType

nitc :: MModule :: char_type

The primitive type Char
protected fun char_type=(char_type: MClassType)

nitc :: MModule :: char_type=

The primitive type Char
private fun check_callback_compilation(cb: NitniCallback): Bool

nitc :: MModule :: check_callback_compilation

Returns true if callbacks has yet to be generated and register it as being generated
private fun check_man(toolcontext: ToolContext)

nitc :: MModule :: check_man

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 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_imported_mclasses(mainmodule: MModule, filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_imported_mclasses

Collect all classes imported from self parents
fun collect_intro_attributes(filter: nullable ModelFilter): Set[MAttribute]

nitc :: MModule :: collect_intro_attributes

Collect attributes introduced in self
fun collect_intro_inits(filter: nullable ModelFilter): Set[MMethod]

nitc :: MModule :: collect_intro_inits

Collect all inits introduced in self
fun collect_intro_mclassdefs(filter: nullable ModelFilter): Set[MClassDef]

nitc :: MModule :: collect_intro_mclassdefs

Collect all class definitions introduced in self
fun collect_intro_mclasses(filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_intro_mclasses

Collect all classes introduced in self
fun collect_intro_methods(filter: nullable ModelFilter): Set[MMethod]

nitc :: MModule :: collect_intro_methods

Collect methods introduced in self (without inits)
fun collect_intro_mproperties(filter: nullable ModelFilter): Set[MProperty]

nitc :: MModule :: collect_intro_mproperties

Collect all properties introduced in self
fun collect_intro_vts(filter: nullable ModelFilter): Set[MVirtualTypeProp]

nitc :: MModule :: collect_intro_vts

Collect virtual types introduced in self
fun collect_linearization(mainmodule: MModule): nullable Array[MEntity]

nitc :: MEntity :: collect_linearization

Collect self linearization anchored on mainmodule
fun collect_linker_libs: nullable Array[String]

nitc :: MModule :: collect_linker_libs

Give requided addinional system libraries (as given to LD_LIBS)
fun collect_local_mclassdefs(filter: nullable ModelFilter): Set[MClassDef]

nitc :: MModule :: collect_local_mclassdefs

Collect all class definitions introduced and refined in self
fun collect_local_mclasses(filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_local_mclasses

Collect all classes introduced and refined in self
fun collect_modifiers: Array[String]

nitc :: MEntity :: collect_modifiers

Collect modifier keywords like redef, private etc
abstract fun collect_parents(mainmodule: MModule, filter: nullable ModelFilter): Set[MENTITY]

nitc :: MEntity :: collect_parents

Collect self parents (direct ancestors)
fun collect_redef_mclassdefs(filter: nullable ModelFilter): Set[MClassDef]

nitc :: MModule :: collect_redef_mclassdefs

Collect all class definitions refined in self
fun collect_redef_mclasses(filter: nullable ModelFilter): Set[MClass]

nitc :: MModule :: collect_redef_mclasses

Collect all classes refined in self
fun collect_redef_mproperties(filter: nullable ModelFilter): Set[MProperty]

nitc :: MModule :: collect_redef_mproperties

Collect properties redefined in self
fun color: String

nitc :: MEntity :: color

private fun compiled_callbacks=(compiled_callbacks: Array[NitniCallback])

nitc :: MModule :: compiled_callbacks=

private fun compiled_ffi_methods: HashSet[AMethPropdef]

nitc :: MModule :: compiled_ffi_methods

Avoid the compile a ffi propdef more than once
private fun compiled_ffi_methods=(compiled_ffi_methods: HashSet[AMethPropdef])

nitc :: MModule :: compiled_ffi_methods=

Avoid the compile a ffi propdef more than once
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
private fun cpp_file: nullable CPPCompilationUnit

nitc :: MModule :: cpp_file

private fun cpp_file=(cpp_file: nullable CPPCompilationUnit)

nitc :: MModule :: cpp_file=

fun cppflags: MultiHashMap[String, String]

nitc :: MModule :: cppflags

Custom options for the C++ compiler (CPPFLAGS)
protected fun cppflags=(cppflags: MultiHashMap[String, String])

nitc :: MModule :: cppflags=

Custom options for the C++ compiler (CPPFLAGS)
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
init defaultinit(model: Model, mgroup: nullable MGroup, name: String, location: Location)

nitc :: MModule :: defaultinit

fun deprecation: nullable MDeprecationInfo

nitc :: MEntity :: deprecation

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

nitc :: MEntity :: deprecation=

Is the entity deprecated?
private fun ensure_java_files

nitc :: MModule :: ensure_java_files

Set up the templates of the Java implementation class
private fun ensure_linking_callback_methods(ccu: CCompilationUnit)

nitc :: MModule :: ensure_linking_callback_methods

Compile C code to call JNI and link C callbacks implementations to Java extern methods
fun examples: Array[MExample]

nitc :: MEntity :: examples

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

nitc :: MEntity :: examples=

Examples found for self
private fun extra_java_files: nullable Array[ExtraJavaFile]

nitc :: MModule :: extra_java_files

Extra Java files to compile with the module
private fun extra_java_files=(extra_java_files: nullable Array[ExtraJavaFile])

nitc :: MModule :: extra_java_files=

Extra Java files to compile with the module
fun ffi_callbacks: HashMap[FFILanguage, Set[NitniCallback]]

nitc :: MModule :: ffi_callbacks

Callbacks used by this module, classified by language
protected fun ffi_callbacks=(ffi_callbacks: HashMap[FFILanguage, Set[NitniCallback]])

nitc :: MModule :: ffi_callbacks=

Callbacks used by this module, classified by language
private fun ffi_ccu: nullable CCompilationUnit

nitc :: MModule :: ffi_ccu

C compilation unit for the FFI files
private fun ffi_ccu=(ffi_ccu: nullable CCompilationUnit)

nitc :: MModule :: ffi_ccu=

C compilation unit for the FFI files
fun ffi_files: Array[ExternFile]

nitc :: MModule :: ffi_files

All FFI files linked to this module
protected fun ffi_files=(ffi_files: Array[ExternFile])

nitc :: MModule :: ffi_files=

All FFI files linked to this module
fun filepath: nullable String

nitc :: MModule :: filepath

The path of the module source, if any
fun finalizable_type: nullable MClassType

nitc :: MModule :: finalizable_type

The primitive type Finalizable
fun finalize_ffi(c: AbstractCompiler)

nitc :: MModule :: finalize_ffi

Write FFI and nitni results to file
fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)

nitc :: MModule :: finalize_ffi_wrapper

Complete the compilation of the FFI code
fun first_real_mmodule: MModule

nitc :: MModule :: first_real_mmodule

Get the non-is_fictive module on which self is based on.
fun first_real_mmodule=(first_real_mmodule: MModule)

nitc :: MModule :: first_real_mmodule=

Get the non-is_fictive module on which self is based on.
fun flatten_mclass_hierarchy: POSet[MClass]

nitc :: MModule :: flatten_mclass_hierarchy

Full hierarchy of introduced and imported classes.
private fun flatten_mclass_hierarchy_cache=(flatten_mclass_hierarchy_cache: nullable POSet[MClass])

nitc :: MModule :: flatten_mclass_hierarchy_cache=

fun float_type: MClassType

nitc :: MModule :: float_type

The primitive type Float
protected fun float_type=(float_type: MClassType)

nitc :: MModule :: float_type=

The primitive type Float
private fun foreign_callbacks=(foreign_callbacks: ForeignCallbackSet)

nitc :: MModule :: foreign_callbacks=

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.
protected fun full_name=(full_name: String)

nitc :: MModule :: full_name=

The canonical name of the module.
private fun gen_man(toolcontext: ToolContext)

nitc :: MModule :: gen_man

fun generate_actor_submodule: Bool

nitc :: MModule :: generate_actor_submodule

Do we need to generate the actor submodule ?
protected fun generate_actor_submodule=(generate_actor_submodule: Bool)

nitc :: MModule :: generate_actor_submodule=

Do we need to generate the actor submodule ?
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun get_primitive_class(name: String): MClass

nitc :: MModule :: get_primitive_class

Force to get the primitive class named name or abort
fun has_annotation(annotation: String): Bool

nitc :: AnnotatedMEntity :: has_annotation

Does self contains annotation in its declaration?
private fun has_man: Bool

nitc :: MModule :: has_man

Does self have a manpage?
fun has_mclass(mclass: MClass): Bool

nitc :: MModule :: has_mclass

Does the current module has a given class mclass?
private fun has_public_objc_header=(has_public_objc_header: Bool)

nitc :: MModule :: has_public_objc_header=

fun hash: Int

core :: Object :: hash

The hash code of the object.
fun header_dependencies: nullable HashSet[MModule]

nitc :: MModule :: header_dependencies

Modules with public foreign code blocks (C header)
protected fun header_dependencies=(header_dependencies: nullable HashSet[MModule])

nitc :: MModule :: header_dependencies=

Modules with public foreign code blocks (C header)
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
private fun impl_java_class_name: String

nitc :: MModule :: impl_java_class_name

Name of the generated Java class where to store all implementation methods of this module
fun in_importation: POSetElement[MModule]

nitc :: MModule :: in_importation

The view of the module in the model.mmodule_importation_hierarchy
protected fun in_importation=(in_importation: POSetElement[MModule])

nitc :: MModule :: in_importation=

The view of the module in the model.mmodule_importation_hierarchy
abstract fun infobox(v: HtmlightVisitor): HInfoBox

nitc :: HInfoBoxable :: infobox

An new infobox documenting the entity
init init

core :: Object :: init

private fun insert_compiler_options

nitc :: MModule :: insert_compiler_options

Tell the C compiler where to find jni.h and how to link with libjvm
fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
fun int16_type: MClassType

nitc :: MModule :: int16_type

The primitive type Int16
protected fun int16_type=(int16_type: MClassType)

nitc :: MModule :: int16_type=

The primitive type Int16
fun int32_type: MClassType

nitc :: MModule :: int32_type

The primitive type Int32
protected fun int32_type=(int32_type: MClassType)

nitc :: MModule :: int32_type=

The primitive type Int32
fun int8_type: MClassType

nitc :: MModule :: int8_type

The primitive type Int8
protected fun int8_type=(int8_type: MClassType)

nitc :: MModule :: int8_type=

The primitive type Int8
fun int_type: MClassType

nitc :: MModule :: int_type

The primitive type Int
protected fun int_type=(int_type: MClassType)

nitc :: MModule :: int_type=

The primitive type Int
fun intro_mclasses: Array[MClass]

nitc :: MModule :: intro_mclasses

All the classes introduced in the module
protected fun intro_mclasses=(intro_mclasses: Array[MClass])

nitc :: MModule :: intro_mclasses=

All the classes introduced in the module
private fun intrude_mmodules=(intrude_mmodules: HashSet[MModule])

nitc :: MModule :: intrude_mmodules=

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_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_generated: Bool

nitc :: MModule :: is_generated

Is self a module generated by a tool?
fun is_generated=(is_generated: Bool)

nitc :: MModule :: is_generated=

Is self a module generated by a tool?
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_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?
fun is_visible(intro_mmodule: MModule, visibility: MVisibility): Bool

nitc :: MModule :: is_visible

Return true if a class or a property introduced in intro_mmodule with a visibility of visibility is visible in self.
fun java_file: nullable JavaClassTemplate

nitc :: MModule :: java_file

Java source file extracted from user FFI code with generated structure
protected fun java_file=(java_file: nullable JavaClassTemplate)

nitc :: MModule :: java_file=

Java source file extracted from user FFI code with generated structure
private fun jname: String

nitc :: MEntity :: jname

A Java compatible name for self
abstract fun json_namespace: JsonNamespace

nitc :: MEntity :: json_namespace

Return self.full_name as an object that can be serialized to json.
fun ldflags: MultiHashMap[String, String]

nitc :: MModule :: ldflags

Custom options for the C linker (LDFLAGS)
protected fun ldflags=(ldflags: MultiHashMap[String, String])

nitc :: MModule :: ldflags=

Custom options for the C linker (LDFLAGS)
fun linearize_mclassdefs(mclassdefs: Array[MClassDef])

nitc :: MModule :: linearize_mclassdefs

Sort a given array of class definitions using the linearization order of the module
fun linearize_mclasses(mclasses: Array[MClass])

nitc :: MModule :: linearize_mclasses

Sort a given array of classes using the linearization order of the module
fun linearize_mpropdefs(mpropdefs: Array[MPropDef])

nitc :: MModule :: linearize_mpropdefs

Sort a given array of property definitions using the linearization order of the module
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 load(modelbuilder: ModelBuilder): nullable AModule

nitc :: MModule :: load

Parse and process importation of a given MModule.
private fun local_target_platform=(local_target_platform: nullable Platform)

nitc :: MModule :: local_target_platform=

fun location: Location

nitc :: MEntity :: location

The origin of the definition.
fun location=(location: Location)

nitc :: MModule :: location=

private fun make_module(toolcontext: ToolContext): Bool

nitc :: MModule :: make_module

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

nitc :: MEntity :: make_node

Make a new NeoNode based on mentity.
private fun makefile_path: nullable String

nitc :: MModule :: makefile_path

private fun man_path: nullable String

nitc :: MModule :: man_path

private fun mclassdef_sorter=(mclassdef_sorter: MClassDefSorter)

nitc :: MModule :: mclassdef_sorter=

fun mclassdefs: Array[MClassDef]

nitc :: MModule :: mclassdefs

All the class definitions of the module
protected fun mclassdefs=(mclassdefs: Array[MClassDef])

nitc :: MModule :: mclassdefs=

All the class definitions of the module
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
fun mgroup: nullable MGroup

nitc :: MModule :: mgroup

The group of module in the package if any
protected fun mgroup=(mgroup: nullable MGroup)

nitc :: MModule :: mgroup=

The group of module in the package if any
abstract fun model: Model

nitc :: MEntity :: model

A Model Entity has a direct link to its model
protected fun model=(model: Model)

nitc :: MModule :: model=

The model considered
fun mpackage: nullable MPackage

nitc :: MModule :: mpackage

The package of the module if any
private fun mpropdef_sorter=(mpropdef_sorter: MPropDefSorter)

nitc :: MModule :: mpropdef_sorter=

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.
protected fun name=(name: String)

nitc :: MModule :: name=

The short name of the module
fun namespace_for(v: MVisibility): String

nitc :: MModule :: namespace_for

The namespace used for entities according to their visibility v.
fun native_array_class: MClass

nitc :: MModule :: native_array_class

The primitive class NativeArray
protected fun native_array_class=(native_array_class: MClass)

nitc :: MModule :: native_array_class=

The primitive class NativeArray
fun native_array_type(elt_type: MType): MClassType

nitc :: MModule :: native_array_type

A primitive type of NativeArray
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
abstract fun nitdoc_breadcrumbs: Array[MEntity]

nitc :: MEntity :: nitdoc_breadcrumbs

MEntities composing the breadcrumbs of a nitdoc page
protected fun nitdoc_breadcrumbs=(nitdoc_breadcrumbs: Array[MEntity])

nitc :: MModule :: nitdoc_breadcrumbs=

fun nitni_ccu: nullable CCompilationUnit

nitc :: MModule :: nitni_ccu

CCompilationUnit used for nitni signatures and code specific to the compiler
protected fun nitni_ccu=(nitni_ccu: nullable CCompilationUnit)

nitc :: MModule :: nitni_ccu=

CCompilationUnit used for nitni signatures and code specific to the compiler
private fun nmodule(v: AbstractCompilerVisitor): nullable AModule

nitc :: MModule :: nmodule

private fun ns_for(visibility: MVisibility): JsonNamespace

nitc :: MModule :: ns_for

private fun objc_file: nullable ObjCCompilationUnit

nitc :: MModule :: objc_file

private fun objc_file=(objc_file: nullable ObjCCompilationUnit)

nitc :: MModule :: objc_file=

fun objc_imported_headers: HashSet[MModule]

nitc :: MModule :: objc_imported_headers

Imported modules with public Objective-C code blocks
protected fun objc_imported_headers=(objc_imported_headers: HashSet[MModule])

nitc :: MModule :: objc_imported_headers=

Imported modules with public Objective-C code blocks
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun object_type: MClassType

nitc :: MModule :: object_type

The primitive type Object, the root of the class hierarchy
protected fun object_type=(object_type: MClassType)

nitc :: MModule :: object_type=

The primitive type Object, the root of the class hierarchy
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).
abstract fun parent_concern: nullable MConcern

nitc :: MConcern :: parent_concern

The concern that contains self or null if self is the root of the concern hierarchy
fun parse(modelbuilder: ModelBuilder): nullable AModule

nitc :: MModule :: parse

Force the parsing of the module using modelbuilder.
fun pkgconfigs: Array[String]

nitc :: MModule :: pkgconfigs

Additional libraries needed for the compilation
protected fun pkgconfigs=(pkgconfigs: Array[String])

nitc :: MModule :: pkgconfigs=

Additional libraries needed for the compilation
fun pointer_type: MClassType

nitc :: MModule :: pointer_type

The type Pointer, super class to all extern classes
protected fun pointer_type=(pointer_type: MClassType)

nitc :: MModule :: pointer_type=

The type Pointer, super class to all extern classes
private fun present_languages: HashSet[FFILanguage]

nitc :: MModule :: present_languages

Foreign language used in this AModule
private fun present_languages=(present_languages: HashSet[FFILanguage])

nitc :: MModule :: present_languages=

Foreign language used in this AModule
private fun private_mmodules=(private_mmodules: HashSet[MModule])

nitc :: MModule :: private_mmodules=

fun properties(mclass: MClass): Set[MProperty]

nitc :: MModule :: properties

All MProperty associated to all MClassDef of mclass
private fun properties_cache=(properties_cache: Map[MClass, Set[MProperty]])

nitc :: MModule :: properties_cache=

private fun public_mmodules=(public_mmodules: HashSet[MModule])

nitc :: MModule :: public_mmodules=

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
fun serializable_type: MClassType

nitc :: MModule :: serializable_type

Get the type of the class Serializable
protected fun serializable_type=(serializable_type: MClassType)

nitc :: MModule :: serializable_type=

Get the type of the class Serializable
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)
fun set_imported_mmodules(imported_mmodules: Array[MModule])

nitc :: MModule :: set_imported_mmodules

Register the imported modules (ie "import some_module") and packages importation graph
fun set_visibility_for(m: MModule, v: MVisibility)

nitc :: MModule :: set_visibility_for

Set the visibility of an imported module
private fun source_url(url_pattern: nullable String): String

nitc :: MEntity :: source_url

Render a HTML link for the MEntity location
fun string_type: MClassType

nitc :: MModule :: string_type

The primitive type String
protected fun string_type=(string_type: MClassType)

nitc :: MModule :: string_type=

The primitive type String
private fun stub_man(toolcontext: ToolContext): nullable String

nitc :: MModule :: stub_man

intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
fun sys_type: nullable MClassType

nitc :: MModule :: sys_type

The primitive type Sys, the main type of the program, if any
fun target_platform: nullable Platform

nitc :: MModule :: target_platform

Recursively get the platform targeted by this module or imported modules
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 try_get_primitive_method(name: String, recv: MClass): nullable MMethod

nitc :: MModule :: try_get_primitive_method

Try to get the primitive method named name on the type recv
fun uint16_type: MClassType

nitc :: MModule :: uint16_type

The primitive type UInt16
protected fun uint16_type=(uint16_type: MClassType)

nitc :: MModule :: uint16_type=

The primitive type UInt16
fun uint32_type: MClassType

nitc :: MModule :: uint32_type

The primitive type UInt32
protected fun uint32_type=(uint32_type: MClassType)

nitc :: MModule :: uint32_type=

The primitive type UInt32
protected fun unsafe_update_hierarchy_cache(mclassdef: MClassDef)

nitc :: MModule :: unsafe_update_hierarchy_cache

Adds a class definition inside flatten_mclass_hierarchy_cache without
fun uses_ffi: Bool

nitc :: MModule :: uses_ffi

Does this module uses the FFI?
protected fun uses_ffi=(uses_ffi: Bool)

nitc :: MModule :: uses_ffi=

Does this module uses the FFI?
fun visibility: MVisibility

nitc :: MEntity :: visibility

The visibility of the MEntity.
fun visibility_for(m: MModule): MVisibility

nitc :: MModule :: visibility_for

Return the visibility level of an imported module m
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.
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::MModule MModule nitc::MConcern MConcern nitc::MModule->nitc::MConcern nitc::AnnotatedMEntity AnnotatedMEntity nitc::MModule->nitc::AnnotatedMEntity nitc::MEntity MEntity nitc::MConcern->nitc::MEntity core::Object Object nitc::AnnotatedMEntity->core::Object ...nitc::MEntity ... ...nitc::MEntity->nitc::MEntity ...core::Object ... ...core::Object->core::Object

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 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 AnnotatedMEntity

nitc :: AnnotatedMEntity

A MEntity that can hold annotations from it's source code
abstract class MConcern

nitc :: MConcern

Something that represents a concern

Class definitions

nitc $ MModule
# A Nit module is usually associated with a Nit source file.
class MModule
	super MConcern

	# The model considered
	redef var model

	# The group of module in the package if any
	var mgroup: nullable MGroup

	# The path of the module source, if any
	#
	# safe alias to `location.file.filepath`
	fun filepath: nullable String do
		var res = self.location.file
		if res == null then return null
		return res.filename
	end

	# The package of the module if any
	# Safe alias for `mgroup.mpackage`
	fun mpackage: nullable MPackage
	do
		var g = mgroup
		if g == null then return null else return g.mpackage
	end

	# The short name of the module
	redef var name

	redef var location is writable

	# Alias for `name`
	redef fun to_s do return self.name

	# The view of the module in the `model.mmodule_importation_hierarchy`
	var in_importation: POSetElement[MModule] is noinit

	# The canonical name of the module.
	#
	# It is usually the `name` prefixed by the package's name.
	# Example: `"package::name"`
	#
	# Default modules use a doubled name to distinguish them from the package name.
	# E.g.: `"core::core"`
	#
	# If the module is package-less, then the short-name is used alone.
	redef var full_name is lazy do
		var mgroup = self.mgroup
		if mgroup == null then
			return self.name
		else
			return "{mgroup.mpackage.name}::{self.name}"
		end
	end

	# The namespace used for entities according to their visibility `v`.
	#
	# Public entities use only the package as a namespace.
	# Private entities use the `full_name` (i.e. "package::module")
	#
	# This method is used by entities to implement their `full_name`.
	fun namespace_for(v: MVisibility): String do
		if v <= private_visibility then return full_name
		var mgroup = self.mgroup
		if mgroup == null then
			return full_name
		else
			return mgroup.mpackage.full_name
		end
	end

	# Return the name of the global C identifier associated to `self`.
	# This name is used to prefix files and other C identifiers associated with `self`.
	redef var c_name is lazy do
		var g = mgroup
		var res
		if g != null and g.mpackage.name != name then
			res = g.mpackage.name.to_cmangle + "__" + name.to_cmangle
		else
			res = name.to_cmangle
		end
		return res
	end

	# C identifier version of `namespace_for`.
	# See `c_name`
	#
	# This method is used by entities to implement their `c_name`.
	fun c_namespace_for(v: MVisibility): String do
		if v <= private_visibility then return c_name
		var mgroup = self.mgroup
		if mgroup == null then
			return c_name
		else
			return mgroup.mpackage.c_name
		end
	end

	# Create a new empty module and register it to a model
	init
	do
		model.mmodules_by_name.add_one(name, self)
		model.mmodules.add(self)
		var mgroup = self.mgroup
		if mgroup != null then
			mgroup.mmodules.add(self)
			if mgroup.name == name then
				assert mgroup.default_mmodule == null
				mgroup.default_mmodule = self
			end
		end
		self.in_importation = model.mmodule_importation_hierarchy.add_node(self)
	end

	# Register the imported modules (ie "import some_module") and packages importation graph
	# In the same time it register the imported package
	# The visibility must be set with `set_visibility_for`.
	fun set_imported_mmodules(imported_mmodules: Array[MModule])
	do
		for m in imported_mmodules do
			self.model.mmodule_importation_hierarchy.add_edge(self, m)
			var actual_mpackage = self.mpackage
			var imported_mpackage = m.mpackage
			if actual_mpackage != null and imported_mpackage != null then
				# Register the imported package
				self.model.mpackage_importation_graph.add_arc(actual_mpackage, imported_mpackage)
			end
		end
	end

	private var intrude_mmodules = new HashSet[MModule]
	private var public_mmodules = new HashSet[MModule]
	private var private_mmodules = new HashSet[MModule]

	# Return the visibility level of an imported module `m`
	fun visibility_for(m: MModule): MVisibility
	do
		if m == self then return intrude_visibility
		if self.intrude_mmodules.has(m) then return intrude_visibility
		if self.public_mmodules.has(m) then return public_visibility
		if self.private_mmodules.has(m) then return private_visibility
		return none_visibility
	end

	# Set the visibility of an imported module
	# REQUIRE: the visibility of the modules imported by `m` are already set for `m`
	fun set_visibility_for(m: MModule, v: MVisibility)
	do
		if v == intrude_visibility then
			self.intrude_mmodules.add(m)
			self.intrude_mmodules.add_all(m.intrude_mmodules)
			self.public_mmodules.add_all(m.public_mmodules)
			self.private_mmodules.add_all(m.private_mmodules)
		else if v == public_visibility then
			self.public_mmodules.add(m)
			self.public_mmodules.add_all(m.intrude_mmodules)
			self.public_mmodules.add_all(m.public_mmodules)
		else if v == private_visibility then
			self.private_mmodules.add(m)
			self.private_mmodules.add_all(m.intrude_mmodules)
			self.private_mmodules.add_all(m.public_mmodules)
		else
			print "{self} visibility for {m} = {v}"
			abort # invalid visibility
		end
	end

	# Return true if a class or a property introduced in `intro_mmodule` with a visibility of `visibility` is visible in self.
	fun is_visible(intro_mmodule: MModule, visibility: MVisibility): Bool
	do
		var v = visibility_for(intro_mmodule)
		if v == intrude_visibility then
			return visibility >= private_visibility
		else if v == public_visibility then
			return visibility > private_visibility
		else if v == private_visibility then
			return visibility > private_visibility
		else if v == none_visibility then
			return false
		else
			abort
		end
	end

	# Is `self` a module generated by a tool?
	#
	# This flag has no effect on the semantic.
	# It is only intended on software engineering software to discriminate computer-generated modules from human-written ones.
	var is_generated: Bool = false is writable

	# Get the non-`is_fictive` module on which `self` is based on.
	#
	# On non-fictive module, this returns `self`.
	# On fictive modules, this is used to refer the module which `self` is based on.
	#
	# This attribute should be set when a fictive module is created. See `is_fictive`.
	var first_real_mmodule: MModule = self is writable

	redef fun parent_concern do return mgroup
end
src/model/mmodule.nit:73,1--273,3

nitc :: model $ MModule
redef class MModule
	# All the classes introduced in the module
	var intro_mclasses = new Array[MClass]

	# All the class definitions of the module
	# (introduction and refinement)
	var mclassdefs = new Array[MClassDef]

	private var mclassdef_sorter: MClassDefSorter is lazy do
		return new MClassDefSorter(self)
	end

	private var mpropdef_sorter: MPropDefSorter is lazy do
		return new MPropDefSorter(self)
	end

	# Does the current module has a given class `mclass`?
	# Return true if the mmodule introduces, refines or imports a class.
	# Visibility is not considered.
	fun has_mclass(mclass: MClass): Bool
	do
		return self.in_importation <= mclass.intro_mmodule
	end

	# Full hierarchy of introduced and imported classes.
	#
	# Create a new hierarchy got by flattening the classes for the module
	# and its imported modules.
	# Visibility is not considered.
	#
	# Note: this function is expensive and is usually used for the main
	# module of a program only. Do not use it to do your own subtype
	# functions.
	fun flatten_mclass_hierarchy: POSet[MClass]
	do
		var res = self.flatten_mclass_hierarchy_cache
		if res != null then return res
                self.flatten_mclass_hierarchy_cache = new POSet[MClass]
		for m in self.in_importation.greaters do
			for cd in m.mclassdefs do
                                unsafe_update_hierarchy_cache(cd)
			end
		end
		return self.flatten_mclass_hierarchy_cache.as(not null)
	end

        # Adds another class definition in the modue.
        # Updates the class hierarchy cache.
        fun add_mclassdef(mclassdef: MClassDef)
        do
                self.mclassdefs.add(mclassdef)
                if self.flatten_mclass_hierarchy_cache != null then
                        unsafe_update_hierarchy_cache(mclassdef)
                end
        end

        # Adds a class definition inside `flatten_mclass_hierarchy_cache` without
        # null check. The caller must have initialized the cache.
        protected fun unsafe_update_hierarchy_cache(mclassdef: MClassDef)
        do
                var hierarchy = self.flatten_mclass_hierarchy_cache.as(not null)
                # Update the cache
                var c = mclassdef.mclass
                hierarchy.add_node(c)
                for s in mclassdef.supertypes do
                        hierarchy.add_edge(c, s.mclass)
                end
        end

	# Sort a given array of classes using the linearization order of the module
	# The most general is first, the most specific is last
	fun linearize_mclasses(mclasses: Array[MClass])
	do
		self.flatten_mclass_hierarchy.sort(mclasses)
	end

	# Sort a given array of class definitions using the linearization order of the module
	# the refinement link is stronger than the specialisation link
	# The most general is first, the most specific is last
	fun linearize_mclassdefs(mclassdefs: Array[MClassDef])
	do
		mclassdef_sorter.sort(mclassdefs)
	end

	# Sort a given array of property definitions using the linearization order of the module
	# the refinement link is stronger than the specialisation link
	# The most general is first, the most specific is last
	fun linearize_mpropdefs(mpropdefs: Array[MPropDef])
	do
		mpropdef_sorter.sort(mpropdefs)
	end

	private var flatten_mclass_hierarchy_cache: nullable POSet[MClass] = null

	# The primitive type `Object`, the root of the class hierarchy
	var object_type: MClassType = self.get_primitive_class("Object").mclass_type is lazy

	# The type `Pointer`, super class to all extern classes
	var pointer_type: MClassType = self.get_primitive_class("Pointer").mclass_type is lazy

	# The primitive type `Bool`
	var bool_type: MClassType = self.get_primitive_class("Bool").mclass_type is lazy

	# The primitive type `Int`
	var int_type: MClassType = self.get_primitive_class("Int").mclass_type is lazy

	# The primitive type `Byte`
	var byte_type: MClassType = self.get_primitive_class("Byte").mclass_type is lazy

	# The primitive type `Int8`
	var int8_type: MClassType = self.get_primitive_class("Int8").mclass_type is lazy

	# The primitive type `Int16`
	var int16_type: MClassType = self.get_primitive_class("Int16").mclass_type is lazy

	# The primitive type `UInt16`
	var uint16_type: MClassType = self.get_primitive_class("UInt16").mclass_type is lazy

	# The primitive type `Int32`
	var int32_type: MClassType = self.get_primitive_class("Int32").mclass_type is lazy

	# The primitive type `UInt32`
	var uint32_type: MClassType = self.get_primitive_class("UInt32").mclass_type is lazy

	# The primitive type `Char`
	var char_type: MClassType = self.get_primitive_class("Char").mclass_type is lazy

	# The primitive type `Float`
	var float_type: MClassType = self.get_primitive_class("Float").mclass_type is lazy

	# The primitive type `String`
	var string_type: MClassType = self.get_primitive_class("String").mclass_type is lazy

	# The primitive type `CString`
	var c_string_type: MClassType = self.get_primitive_class("CString").mclass_type is lazy

	# A primitive type of `Array`
	fun array_type(elt_type: MType): MClassType do return array_class.get_mtype([elt_type])

	# The primitive class `Array`
	var array_class: MClass = self.get_primitive_class("Array") is lazy

	# A primitive type of `NativeArray`
	fun native_array_type(elt_type: MType): MClassType do return native_array_class.get_mtype([elt_type])

	# The primitive class `NativeArray`
	var native_array_class: MClass = self.get_primitive_class("NativeArray") is lazy

	# The primitive type `Sys`, the main type of the program, if any
	fun sys_type: nullable MClassType
	do
		var clas = self.model.get_mclasses_by_name("Sys")
		if clas == null then return null
		return get_primitive_class("Sys").mclass_type
	end

	# The primitive type `Finalizable`
	# Used to tag classes that need to be finalized.
	fun finalizable_type: nullable MClassType
	do
		var clas = self.model.get_mclasses_by_name("Finalizable")
		if clas == null then return null
		return get_primitive_class("Finalizable").mclass_type
	end

	# Force to get the primitive class named `name` or abort
	fun get_primitive_class(name: String): MClass
	do
		var cla = self.model.get_mclasses_by_name(name)
		# Filter classes by introducing module
		if cla != null then cla = [for c in cla do if self.in_importation <= c.intro_mmodule then c]
		if cla == null or cla.is_empty then
			if name == "Bool" and self.model.get_mclasses_by_name("Object") != null then
				# Bool is injected because it is needed by engine to code the result
				# of the implicit casts.
				var loc = model.no_location
				var c = new MClass(self, name, loc, null, enum_kind, public_visibility)
				var cladef = new MClassDef(self, c.mclass_type, loc)
				cladef.set_supertypes([object_type])
				cladef.add_in_hierarchy
				return c
			end
			print_error("Fatal Error: no primitive class {name} in {self}")
			exit(1)
			abort
		end
		if cla.length != 1 then
			var msg = "Fatal Error: more than one primitive class {name} in {self}:"
			for c in cla do msg += " {c.full_name}"
			print_error msg
			#exit(1)
		end
		return cla.first
	end

	# Try to get the primitive method named `name` on the type `recv`
	fun try_get_primitive_method(name: String, recv: MClass): nullable MMethod
	do
		var props = self.model.get_mproperties_by_name(name)
		if props == null then return null
		var res: nullable MMethod = null
		var recvtype = recv.intro.bound_mtype
		for mprop in props do
			assert mprop isa MMethod
			if not recvtype.has_mproperty(self, mprop) then continue
			if res == null then
				res = mprop
			else if res != mprop then
				print_error("Fatal Error: ambigous property name '{name}'; conflict between {mprop.full_name} and {res.full_name}")
				abort
			end
		end
		return res
	end
end
src/model/model.nit:170,1--384,3

nitc :: loader $ MModule
redef class MModule
	# Force the parsing of the module using `modelbuilder`.
	#
	# If the module was already parsed, the existing ASI is returned.
	# Else the source file is loaded, and parsed and some
	#
	# The importation is not done by this
	#
	# REQUIRE: `filepath != null`
	# ENSURE: `modelbuilder.parsed_modules.has(self)`
	fun parse(modelbuilder: ModelBuilder): nullable AModule
	do
		# Already known and loaded? then return it
		var nmodule = modelbuilder.mmodule2nmodule.get_or_null(self)
		if nmodule != null then return nmodule

		var filepath = self.filepath
		assert filepath != null
		# Load it manually
		nmodule = modelbuilder.load_module_ast(filepath)
		if nmodule == null then return null # forward error

		# build the mmodule
		nmodule.mmodule = self
		self.location = nmodule.location
		modelbuilder.build_a_mmodule(mgroup, nmodule)

		modelbuilder.parsed_modules.add self
		return nmodule
	end

	# Parse and process importation of a given MModule.
	#
	# Basically chains `parse` and `build_module_importation`.
	fun load(modelbuilder: ModelBuilder): nullable AModule
	do
		var nmodule = parse(modelbuilder)
		if nmodule == null then return null

		modelbuilder.build_module_importation(nmodule)
		return nmodule
	end
end
src/loader.nit:1131,1--1173,3

nitc :: neo $ MModule
redef class MModule
	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
		for parent in in_importation.direct_greaters do
			node.out_edges.add(new NeoEdge(node, "IMPORTS", parent.to_node(nodes, model_name)))
		end
		for mclass in intro_mclasses do
			node.out_edges.add(new NeoEdge(node, "INTRODUCES", mclass.to_node(nodes, model_name)))
		end
		for mclassdef in mclassdefs do
			node.out_edges.add(new NeoEdge(node, "DEFINES", mclassdef.to_node(nodes, model_name)))
		end
		return node
	end
end
src/neo.nit:716,1--731,3

nitc :: light_ffi_base $ MModule
redef class MModule
	# All FFI files linked to this module
	var ffi_files = new Array[ExternFile]
end
src/ffi/light_ffi_base.nit:81,1--84,3

nitc :: platform $ MModule
redef class MModule
	private var local_target_platform: nullable Platform = null

	# Recursively get the platform targeted by this module or imported modules
	fun target_platform: nullable Platform
	do
		var ltp = local_target_platform
		if ltp != null then return ltp

		for mmodule in in_importation.greaters do
			ltp = mmodule.local_target_platform
			if ltp != null then return ltp
		end

		return null
	end
end
src/platform/platform.nit:87,1--103,3

nitc :: actors_generation_phase $ MModule
redef class MModule
	# Do we need to generate the actor submodule ?
	var generate_actor_submodule = false
end
src/frontend/actors_generation_phase.nit:288,1--291,3

nitc :: parse_annotations $ MModule
redef class MModule
	super AnnotatedMEntity

	redef var is_test is lazy do return has_annotation("test")
end
src/frontend/parse_annotations.nit:107,1--111,3

nitc :: light_c $ MModule
redef class MModule
	# FIXME make nullable the key of `cflags`, `ldflags` and `cppflags` when
	# supported by the bootstrap

	# Custom options for the C compiler (CFLAGS)
	var cflags = new MultiHashMap[String, String]

	# Custom options for the C linker (LDFLAGS)
	var ldflags = new MultiHashMap[String, String]

	# Additional libraries needed for the compilation
	# Will be used with pkg-config
	var pkgconfigs = new Array[String]
end
src/ffi/light_c.nit:73,1--86,3

nitc :: ffi_base $ MModule
redef class MModule
	# Callbacks used by this module, classified by language
	var ffi_callbacks = new HashMap[FFILanguage, Set[NitniCallback]]
end
src/ffi/ffi_base.nit:27,1--30,3

nitc :: testing_suite $ MModule
redef class MModule
	# Methods tagged with `before_all` at the module level (in `Sys`)
	private fun before_all: Array[MMethodDef] do
		var res = new Array[MMethodDef]
		for mmodule in in_importation.greaters do
			for mclassdef in mmodule.mclassdefs do
				if mclassdef.name != "Sys" then continue
				for mpropdef in mclassdef.mpropdefs do
					if not mpropdef isa MMethodDef or not mpropdef.is_before_all then continue
					res.add mpropdef
				end
			end
		end
		var lin = res.to_a
		linearize_mpropdefs(lin)
		return lin
	end

	# Methods tagged with `after_all` at the module level (in `Sys`)
	private fun after_all: Array[MMethodDef] do
		var res = new Array[MMethodDef]
		for mmodule in in_importation.greaters do
			for mclassdef in mmodule.mclassdefs do
				if mclassdef.name != "Sys" then continue
				for mpropdef in mclassdef.mpropdefs do
					if not mpropdef isa MMethodDef or not mpropdef.is_after_all then continue
					res.add mpropdef
				end
			end
		end
		var lin = res.to_a
		linearize_mpropdefs(lin)
		return lin.reversed
	end
end
src/testing/testing_suite.nit:544,1--578,3

nitc :: light_ffi $ MModule
redef class MModule
	# Does this module uses the FFI?
	var uses_ffi: Bool = false

	# C compilation unit for the FFI files
	private var ffi_ccu: nullable CCompilationUnit = null

	# Foreign language used in this AModule
	private var present_languages = new HashSet[FFILanguage]

	# Complete the compilation of the FFI code
	fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)
	do
		var cflags = self.cflags[""].join(" ")

		ffi_ccu.write_as_impl(self, compdir)
		for filename in ffi_ccu.files do
			var f = new ExternCFile(filename.basename, cflags)
			f.pkgconfigs.add_all pkgconfigs
			ffi_files.add(f)
		end
	end

	# Avoid the compile a ffi propdef more than once
	# See `AMethPropdef::compile_ffi_method`
	# FIXME find a better way
	private var compiled_ffi_methods = new HashSet[AMethPropdef]
end
src/ffi/light_ffi.nit:43,1--70,3

nitc :: header_dependency $ MModule
redef class MModule
	# Modules with public foreign code blocks (C header)
	var header_dependencies: nullable HashSet[MModule] = null

	private fun compute_header_dependencies(v: HeaderDependancyPhase)
	do
		if header_dependencies != null then return

		var header_dependencies = new HashSet[MModule]

		# gather from importation
		for m in in_importation.direct_greaters do
			m.compute_header_dependencies v

			# does the super module has inherited dependencies?
			var hd = m.header_dependencies
			assert hd != null
			if not hd.is_empty then
				header_dependencies.add_all hd
			end

			# does the super module itself has extern dependencies?
			var amodule = v.toolcontext.modelbuilder.mmodule2node(m)
			if amodule != null and amodule.has_public_c_header then header_dependencies.add(m)
		end

		self.header_dependencies = header_dependencies
	end
end
src/ffi/header_dependency.nit:35,1--63,3

nitc :: cpp $ MModule
redef class MModule
	private var cpp_file: nullable CPPCompilationUnit = null

	# Custom options for the C++ compiler (CPPFLAGS)
	var cppflags = new MultiHashMap[String, String]
end
src/ffi/cpp.nit:27,1--32,3

nitc :: objc $ MModule
redef class MModule
	private var objc_file: nullable ObjCCompilationUnit = null

	private var has_public_objc_header = false

	# Imported modules with public Objective-C code blocks
	var objc_imported_headers: HashSet[MModule] is lazy do
		var dep = new HashSet[MModule]

		# gather from importation
		for m in in_importation.direct_greaters do
			# does the super module has inherited dependencies?
			var import_dep = m.objc_imported_headers
			if not import_dep.is_empty then
				dep.add_all import_dep
			end

			# does the super module itself has a public header?
			if m.has_public_objc_header then dep.add(m)
		end

		return dep
	end
end
src/ffi/objc.nit:33,1--56,3

nitc :: nitserial $ MModule
redef class MModule
	# Get the type of the class `Serializable`
	var serializable_type: MClassType is lazy do
		return self.get_primitive_class("Serializable").mclass_type
	end
end
src/nitserial.nit:52,1--57,3

nitc :: model_collect $ MModule
redef class MModule

	redef fun collect_modifiers do return super + ["module"]

	# Collect all modules directly imported by `self`
	redef fun collect_ancestors(mainmodule, filter) do
		var res = new HashSet[MENTITY]
		for mentity in in_importation.greaters do
			if mentity == self then continue
			if filter == null or filter.accept_mentity(mentity) then res.add mentity
		end
		return res
	end

	# Collect all modules directly imported by `self`
	redef fun collect_parents(mainmodule, filter) do
		var res = new HashSet[MENTITY]
		for mentity in in_importation.direct_greaters do
			if mentity == self then continue
			if filter == null or filter.accept_mentity(mentity) then res.add mentity
		end
		return res
	end

	# Collect all modules that directly import `self`
	redef fun collect_children(mainmodule, filter) do
		var res = new HashSet[MENTITY]
		for mentity in in_importation.direct_smallers do
			if mentity == self then continue
			if filter == null or filter.accept_mentity(mentity) then res.add mentity
		end
		return res
	end

	# Collect all module descendants of `self` (direct and transitive imports)
	redef fun collect_descendants(mainmodule, filter) do
		var res = new HashSet[MENTITY]
		for mentity in in_importation.smallers do
			if mentity == self then continue
			if filter == null or filter.accept_mentity(mentity) then res.add mentity
		end
		return res
	end

	# Collect all class definitions introduced in `self`
	fun collect_intro_mclassdefs(filter: nullable ModelFilter): Set[MClassDef] do
		var res = new HashSet[MClassDef]
		for mclassdef in mclassdefs do
			if not mclassdef.is_intro then continue
			if filter == null or filter.accept_mentity(mclassdef) then res.add mclassdef
		end
		return res
	end

	# Collect all class definitions refined in `self`
	fun collect_redef_mclassdefs(filter: nullable ModelFilter): Set[MClassDef] do
		var res = new HashSet[MClassDef]
		for mclassdef in mclassdefs do
			if mclassdef.is_intro then continue
			if filter == null or filter.accept_mentity(mclassdef) then res.add mclassdef
		end
		return res
	end

	# Collect all class definitions introduced and refined in `self`
	fun collect_local_mclassdefs(filter: nullable ModelFilter): Set[MClassDef] do
		var res = new HashSet[MClassDef]
		res.add_all collect_intro_mclassdefs(filter)
		res.add_all collect_redef_mclassdefs(filter)
		return res
	end

	# Collect all classes introduced in `self`
	fun collect_intro_mclasses(filter: nullable ModelFilter): Set[MClass] do
		var res = new HashSet[MClass]
		for mclass in intro_mclasses do
			if filter == null or filter.accept_mentity(mclass) then res.add mclass
		end
		return res
	end

	# Collect all classes refined in `self`
	fun collect_redef_mclasses(filter: nullable ModelFilter): Set[MClass] do
		var mclasses = new HashSet[MClass]
		for mclassdef in mclassdefs do
			if filter != null and not filter.accept_mentity(mclassdef.mclass) then continue
			if not mclassdef.is_intro then mclasses.add(mclassdef.mclass)
		end
		return mclasses
	end

	# Collect all classes introduced and refined in `self`
	fun collect_local_mclasses(filter: nullable ModelFilter): Set[MClass] do
		var res = new HashSet[MClass]
		res.add_all collect_intro_mclasses(filter)
		res.add_all collect_redef_mclasses(filter)
		return res
	end

	# Collect all classes imported from `self` parents
	fun collect_imported_mclasses(mainmodule: MModule, filter: nullable ModelFilter): Set[MClass] do
		var res = new HashSet[MClass]
		for parent in collect_parents(mainmodule, filter) do
			res.add_all parent.collect_intro_mclasses(filter)
			res.add_all parent.collect_redef_mclasses(filter)
			res.add_all parent.collect_imported_mclasses(mainmodule, filter)
		end
		return res
	end

	# Collect all properties introduced in `self`
	fun collect_intro_mproperties(filter: nullable ModelFilter): Set[MProperty] do
		var res = new HashSet[MProperty]
		for mclass in collect_intro_mclasses(filter) do
			res.add_all mclass.collect_intro_mproperties(filter)
		end
		return res
	end

	# Collect properties redefined in `self`
	fun collect_redef_mproperties(filter: nullable ModelFilter): Set[MProperty] do
		var res = new HashSet[MProperty]
		for mclassdef in mclassdefs do
			for mpropdef in mclassdef.collect_redef_mpropdefs(filter) do
				res.add mpropdef.mproperty
			end
		end
		return res
	end

	# Collect attributes introduced in `self`
	fun collect_intro_attributes(filter: nullable ModelFilter): Set[MAttribute] do
		var res = new HashSet[MAttribute]
		for mproperty in collect_intro_mproperties(filter) do
			if mproperty isa MAttribute then res.add(mproperty)
		end
		return res
	end

	# Collect all inits introduced in `self`
	fun collect_intro_inits(filter: nullable ModelFilter): Set[MMethod] do
		var res = new HashSet[MMethod]
		for mproperty in collect_intro_mproperties(filter) do
			if mproperty isa MMethod and mproperty.is_init then res.add(mproperty)
		end
		return res
	end

	# Collect methods introduced in `self` (without inits)
	fun collect_intro_methods(filter: nullable ModelFilter): Set[MMethod] do
		var res = new HashSet[MMethod]
		for mproperty in collect_intro_mproperties(filter) do
			if mproperty isa MMethod and not mproperty.is_init then res.add(mproperty)
		end
		return res
	end

	# Collect virtual types introduced in `self`
	fun collect_intro_vts(filter: nullable ModelFilter): Set[MVirtualTypeProp] do
		var res = new HashSet[MVirtualTypeProp]
		for mproperty in collect_intro_mproperties(filter) do
			if mproperty isa MVirtualTypeProp then res.add(mproperty)
		end
		return res
	end
end
src/model/model_collect.nit:475,1--640,3

nitc :: model_visitor $ MModule
redef class MModule
	# Visit all the classes and class definitions of the module.
	#
	# On class introduction, the `MClass` then the `MClassDef` are visited.
	# On class refinement, only the `MClassDef` is visited (the `MClass` is visited in an imported module).
	# On class importation, nothing is visited (the `MClass` and the `MClassDef` are visited in imported modules).
	redef fun visit_all(v) do
		for x in mclassdefs do
			if x.is_intro then v.enter_visit(x.mclass)
			v.enter_visit(x)
		end
	end
end
src/model/model_visitor.nit:128,1--140,3

nitc :: abstract_compiler $ MModule
redef class MModule
	# All `MProperty` associated to all `MClassDef` of `mclass`
	fun properties(mclass: MClass): Set[MProperty] do
		if not self.properties_cache.has_key(mclass) then
			var properties = new HashSet[MProperty]
			var parents = new Array[MClass]
			if self.flatten_mclass_hierarchy.has(mclass) then
				parents.add_all(mclass.in_hierarchy(self).direct_greaters)
			end
			for parent in parents do
				properties.add_all(self.properties(parent))
			end
			for mclassdef in mclass.mclassdefs do
				if not self.in_importation <= mclassdef.mmodule then continue
				for mprop in mclassdef.intro_mproperties do
					properties.add(mprop)
				end
			end
			self.properties_cache[mclass] = properties
		end
		return properties_cache[mclass]
	end
	private var properties_cache: Map[MClass, Set[MProperty]] = new HashMap[MClass, Set[MProperty]]

	# Write FFI and nitni results to file
	fun finalize_ffi(c: AbstractCompiler) do end

	# Give requided addinional system libraries (as given to LD_LIBS)
	# Note: can return null instead of an empty set
	fun collect_linker_libs: nullable Array[String] do return null
end
src/compiler/abstract_compiler.nit:4628,1--4658,3

nitc :: java $ MModule
redef class MModule
	private var callbacks_used_from_java = new ForeignCallbackSet

	# Java source file extracted from user FFI code with generated structure
	var java_file: nullable JavaClassTemplate = null

	# Set up the templates of the Java implementation class
	private fun ensure_java_files
	do
		if java_file != null then return

		# Java implementation code
		java_file = new JavaClassTemplate(impl_java_class_name)
	end

	# Compile C code to call JNI and link C callbacks implementations to Java extern methods
	private fun ensure_linking_callback_methods(ccu: CCompilationUnit)
	do
		var callbacks = callbacks_used_from_java.callbacks
		if callbacks.is_empty then
			ccu.body_decl.add "static int nit_ffi_with_java_registered_natives = 1;\n"
			return
		end

		ccu.body_decl.add "static int nit_ffi_with_java_registered_natives = 0;\n"

		var jni_methods = new Array[String]
		for cb in callbacks do
			jni_methods.add_all(cb.jni_methods_declaration(self))
		end
		for cb in callbacks_used_from_java.types do
			jni_methods.add_all(cb.jni_methods_declaration(self))
		end

		var cf = new CFunction("void nit_ffi_with_java_register_natives(JNIEnv* env, jclass jclazz)")
		cf.exprs.add """
	nit_ffi_with_java_registered_natives = 1;

	jint n_methods = {{{jni_methods.length}}};
	JNINativeMethod methods[] = {
		{{{jni_methods.join(",\n\t\t")}}}
	};
	jint res = (*env)->RegisterNatives(env, jclazz, methods, n_methods);
	if (res != JNI_OK) {
		PRINT_ERROR("RegisterNatives failed\\n");
		(*env)->ExceptionDescribe(env);
		exit(1);
	}
		"""
		ccu.add_local_function cf
	end

	# Tell the C compiler where to find jni.h and how to link with libjvm
	private fun insert_compiler_options
	do
		cflags.add_one("", "-I $(JAVA_HOME)/include/ -I $(JAVA_HOME)/include/linux/")
	end

	# Name of the generated Java class where to store all implementation methods of this module
	# as well as generated callbacks.
	private fun impl_java_class_name: String do return "Nit_{name}"
end
src/ffi/java.nit:254,1--315,3

nitc :: htmlight $ MModule
redef class MModule
	redef fun infobox(v)
	do
		var res = new HInfoBox(v, "module {name}")
		res.href = v.hrefto(self)
		if not v.show_infobox then return res
		res.new_field("module").add(linkto(v))
		add_doc_to_infobox(res)
		if in_importation.greaters.length > 1 then
			var c = res.new_dropdown("imports", "{in_importation.greaters.length-1} modules")
			for x in in_importation.greaters do
				if x == self then continue
				c.open("li").add x.linkto(v)
			end
		end
		return res
	end

	redef fun linkto(v) do return linkto_text(v, name)
end
src/htmlight.nit:475,1--494,3

nitc :: vim_autocomplete $ MModule
redef class MModule
	redef fun write_extra_doc(model, mainmodule, stream)
	do
		# Introduced classes
		var class_intros = collect_intro_mclasses.to_a
		if class_intros.not_empty then
			alpha_comparator.sort class_intros
			stream.write line_separator*2
			stream.write "## Introduced classes"

			for c in class_intros do
				stream.write line_separator
				stream.write "* {c.name}"
				var doc = c.intro.mdoc
				if doc != null then stream.write ": {doc.content.first}"
			end
		end

		# Introduced properties
		var prop_intros = new Array[MPropDef]
		for c in mclassdefs do
			prop_intros.add_all c.collect_intro_mpropdefs
		end

		if prop_intros.not_empty then
			alpha_comparator.sort prop_intros
			stream.write line_separator*2
			stream.write "## Introduced properties"
			stream.write line_separator

			for p in prop_intros do
				p.mproperty.write_synopsis(mainmodule, stream)
			end
		end
	end
end
src/doc/vim_autocomplete.nit:333,1--368,3

nitc :: model_index $ MModule
redef class MModule
	redef fun mentity_kind_rank do return 3
end
src/model/model_index.nit:654,1--656,3

nitc :: extra_java_files $ MModule
redef class MModule
	# Extra Java files to compile with the module
	private var extra_java_files: nullable Array[ExtraJavaFile] = null
end
src/ffi/extra_java_files.nit:30,1--33,3

nitc :: light $ MModule
redef class MModule
	# `CCompilationUnit` used for nitni signatures and code specific to the compiler
	var nitni_ccu: nullable CCompilationUnit = null

	private fun nmodule(v: AbstractCompilerVisitor): nullable AModule
	do
		return v.compiler.modelbuilder.mmodule2node(self)
	end

	redef fun finalize_ffi(compiler)
	do
		if not uses_ffi then return

		var v = compiler.new_visitor
		var n = nmodule(v)
		if n == null then return
		n.ensure_compile_ffi_wrapper
		finalize_ffi_wrapper(v.compiler.toolchain.compile_dir, v.compiler.mainmodule)
		for file in ffi_files do v.compiler.extern_bodies.add(file)

		ensure_compile_nitni_base(v)

		nitni_ccu.header_c_types.add("#include \"{c_name}._ffi.h\"\n")
		nitni_ccu.header_c_types.add("#include <stdint.h>\n")
		nitni_ccu.header_c_types.add """
extern void nitni_global_ref_incr(void*);
extern void nitni_global_ref_decr(void*);
"""

		var cflags = self.cflags[""].join(" ")
		nitni_ccu.write_as_nitni(self, v.compiler.toolchain.compile_dir)

		for file in nitni_ccu.files do
			var f = new ExternCFile(file.basename, cflags)
			f.pkgconfigs.add_all pkgconfigs
			v.compiler.extern_bodies.add(f)
		end

		# reset FFI things so the next compilation job, if any, starts with a clean context
		# FIXME clean and rationalize this
		nitni_ccu = null
		compiled_ffi_methods.clear
		ffi_ccu = null
		ffi_files.clear
	end

	private fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
	do
		if nitni_ccu != null then return

		nitni_ccu = new CCompilationUnit
	end

	redef fun collect_linker_libs
	do
		if not self.ldflags.keys.has("") then return null
		return self.ldflags[""]
	end
end
src/compiler/compiler_ffi/light.nit:23,1--81,3

nitc :: uml_module $ MModule
redef class MModule
	redef fun tpl_module(model) do
		var name = self.name.escape_to_dot
		var t = new Template
		t.add "subgraph cluster{name} \{\n"
		t.add "label = \"{name}\"\n"
		for i in mclassdefs do
			if not model.filter.accept_mentity(i) then continue
			t.add i.tpl_module(model)
		end
		t.add "\}\n"
		return t
	end
end
src/uml/uml_module.nit:48,1--61,3

nitc :: nitlight $ MModule
redef class MModule
	redef fun href(v)
	do
		if self == v.current_module then return ""
		if not v.mmodules.has(self) then return null
		return c_name + ".html"
	end
end
src/nitlight.nit:42,1--49,3

nitc :: compiler_ffi $ MModule
redef class MModule
	private var foreign_callbacks = new ForeignCallbackSet

	redef fun finalize_ffi(compiler: AbstractCompiler)
	do
		if not uses_ffi then return

		super

		compiled_callbacks.clear
		#Do not reset `foreign_callbacks` and `ffi_callbacks` because they are computed in previous phases
	end

	private var compiled_callbacks = new Array[NitniCallback]

	# Returns true if callbacks has yet to be generated and register it as being generated
	private fun check_callback_compilation(cb: NitniCallback): Bool
	do
		var compiled = compiled_callbacks.has(cb)
		if not compiled then compiled_callbacks.add(cb)
		return not compiled
	end
end
src/compiler/compiler_ffi/compiler_ffi.nit:23,1--45,3

nitc :: nitpackage $ MModule
redef class MModule
	private fun makefile_path: nullable String do
		var file = location.file
		if file == null then return null

		var dir = file.filename.dirname
		var makefile = (dir / "Makefile")
		if not makefile.file_exists then return null

		for line in makefile.to_path.read_lines do
			if line.has_prefix("{name}:") then return makefile
		end
		return null
	end

	private fun man_path: nullable String do
		var mpackage = self.mpackage
		if mpackage == null then return null
		var path = mpackage.man_path
		if path == null then return null
		return path / "{name}.man"
	end

	# Does `self` have a manpage?
	private fun has_man: Bool do
		var man_path = self.man_path
		if man_path == null then return false
		return man_path.file_exists
	end

	private fun make_module(toolcontext: ToolContext): Bool do
		var mpackage = self.mpackage
		if mpackage == null then return false
		if not mpackage.is_expanded then return false

		var pkg_path = mpackage.package_path
		if pkg_path == null then return false

		var pr = new ProcessReader("sh", "-c", "cd {pkg_path} && make -Bs bin/{name}")
		var out = pr.read_all.trim
		pr.close
		pr.wait
		if pr.status > 0 then
			toolcontext.error(location, "unable to compile `{name}`")
			print out
			return false
		end
		return true
	end

	private fun stub_man(toolcontext: ToolContext): nullable String do
		if not make_module(toolcontext) then return null
		var mpackage = self.mpackage
		if mpackage == null then return null
		if not mpackage.is_expanded then return null

		var pkg_path = mpackage.package_path
		if pkg_path == null then return null

		var pr = new ProcessReader("{pkg_path}/bin/{name}", "--stub-man")
		var man = pr.read_all.trim
		pr.close
		pr.wait
		if pr.status > 0 then
			toolcontext.error(location, "unable to run `{pkg_path}/bin/{name} --stub-man`")
			print man
			return null
		end
		return man
	end

	private fun check_man(toolcontext: ToolContext) do
		if not has_man then
			toolcontext.error(location, "No manpage for bin {full_name}")
			return
		end
		var man_path = self.man_path.as(not null)
		var man = stub_man(toolcontext)
		if man == null or man.is_empty then return

		var old_man = new ManPage.from_file(self, man_path)
		var new_man = new ManPage.from_string(self, man)
		old_man.diff(toolcontext, new_man)
	end

	private fun gen_man(toolcontext: ToolContext) do
		var man = stub_man(toolcontext)
		if man == null or man.is_empty then return
		var man_path = self.man_path
		if man_path == null then return
		man.write_to_file(man_path)
		toolcontext.info("created manpage `{man_path}`", 0)
	end
end
src/nitpackage.nit:436,1--529,3

nitc :: ffi $ MModule
redef class MModule
	# Complete the compilation of the FFI code
	redef fun finalize_ffi_wrapper(compdir, mainmodule)
	do
		for language in ffi_callbacks.keys do
			for callback in ffi_callbacks[language] do
				language.compile_callback(callback, self, mainmodule, ffi_ccu.as(not null))
			end

			language.compile_to_files(self, compdir)
		end

		# include dependancies FFI
		for mod in header_dependencies do
			if mod.uses_ffi then ffi_ccu.header_custom.add("#include \"{mod.c_name}._ffi.h\"\n")
		end

		super
	end
end
src/ffi/ffi.nit:57,1--76,3

nitc :: html_model $ MModule
redef class MModule
	redef fun html_icon do return new BSIcon("file", ["text-muted"])

	redef fun html_namespace do
		var mpackage = self.mpackage
		var tpl = new Template
		if mpackage != null then
			tpl.add mpackage.html_namespace
			tpl.add " :: "
		end
		tpl.add html_link
		return tpl
	end
end
src/doc/templates/html_model.nit:119,1--132,3

nitc :: commands_graph $ MModule
redef class MModule
	redef fun to_dot_node do
		var node = super
		node["shape"] = "note"
		return node
	end
end
src/doc/commands/commands_graph.nit:385,1--391,3

nitc :: json_model $ MModule
redef class MModule
	redef fun json_namespace do
		var ns = new JsonNamespace
		if mgroup != null then
			ns.add_all mgroup.as(not null).mpackage.json_namespace
			ns.add "::"
		end
		ns.add to_json_ref
		return ns
	end

	private fun ns_for(visibility: MVisibility): JsonNamespace do
		if visibility <= private_visibility then return json_namespace
		var mgroup = self.mgroup
		if mgroup == null then return json_namespace
		return mgroup.mpackage.json_namespace
	end
end
src/doc/templates/json_model.nit:130,1--147,3

nitc :: static_base $ MModule
redef class MModule
	redef var nitdoc_breadcrumbs is lazy do
		var mgroup = self.mgroup
		if mgroup != null then
			return mgroup.nitdoc_breadcrumbs + [self]
		end
		return [self]
	end
end
src/doc/static/static_base.nit:263,1--271,3

nitc :: static_html $ MModule
redef class MModule
	redef var html_url is lazy do return "module_{super}"
end
src/doc/static/static_html.nit:384,1--386,3

nitc :: api_metrics $ MModule
redef class MModule
	redef fun collect_metrics(h) do
		var mclasses_metrics = h.mclasses_metrics
		mclasses_metrics.collect(new HashSet[MClass].from(intro_mclasses))

		var mmodule_metrics = h.mmodules_metrics
		mmodule_metrics.collect(new HashSet[MModule].from([self]))

		var metrics = new JsonObject
		metrics["mclasses"] = mclasses_metrics
		metrics["mmodule"] = mmodule_metrics
		return metrics
	end
end
src/doc/api/api_metrics.nit:126,1--139,3