Standard elements of a module
The following may serve as a check list for writing modules and a quick reference as to where to find the corresponding examples and documentation in this user guide:
- Module initialization (always required):
  - Mosel Native Interface header function: Structures for passing information, Implementing the new subroutine, Complete module example
-  main interface structure
 examples: Interface structure, Interface structure, Implementing the new subroutine, Interface structure, Interface structure, Complete module example;
- structure with the list of NI functions
 example: Initialization function, Implementing the new subroutine, Complete module example
- initialization function
 examples: Initialization function, Initialization function, Implementing the new subroutine, Initialization function, Initialization function; documentation: Module initialization
- module context 
 examples: Module context, Module context, Improved memory management for external types, Module context
 
- Definition of constants:
  - entry in the list of constants
 examples: List of constants, List of parameters; documentation: List of constants
 
- entry in the list of constants
- Definition of subroutines:
  - entry in the list of subroutines
 examples: List of subroutines, List of subroutines, List of subroutines, List of subroutines, List of subroutines, List of subroutines; documentation: List of subroutines
- implementation
 examples: Implementing the new subroutine, Other library functions and operators, Functions for handling parameters, Complete module example, Solver library calls, Implementation of callback handling, Implementing the 'writeprob' subroutine
 
- entry in the list of subroutines
- Definition of types:
  - entry in the list of types
 example: List of types, List of types, List of types; documentation: List of types
- entry in the list of services
 example: List of services; documentation: List of services
- implementation of service XPRM_SRV_RESET: Service function reset, Improved memory management for external types, Implementation of services
 - implementation of type-related functions
 documentation: List of types
 required function create: Type-related functions, Improved memory management for external types, Handling optimization problems
 optional functions delete, tostr, fromstr, copy: Type-related functions, Improved memory management for external types, Handling optimization problems
 - operators (entries in the list of subroutines)
 examples: Structures for passing information, List of subroutines; documentation: Overview on operators in Mosel
- implementation of operators
 examples: Other library functions and operators, Definition of operators
 
- entry in the list of types
- Definition of I/O drivers:
  - for examples see the Xpress Whitepaper `Generalized file handling in Mosel'
 
- Definition of control parameters:
  - required parameter information (no predefined structure)
 examples: Module context, List of parameters; documentation: Parameters
- entries in the list of services
 examples: List of services, List of services; documentation: List of services
- implementation of service functions
 required service XPRM_SRV_PARAM: Services related to parameters, Implementation of services
 optional service XPRM_SRV_PARLST: Services related to parameters, Implementation of services
- entries in the list of subroutines
 examples: List of subroutines, List of subroutines; documentation: List of subroutines
- implementation of the subroutines setparam and getparam: Functions for handling parameters, Solver library calls
 
- required parameter information (no predefined structure)
- Definition of a MIP solver interface:
  - MIP solver interface structure
 example: Module context
- implementation of matrix handling functions
 examples: Implementation of MIP solver interface functions, Generating names for matrix entries
 
- MIP solver interface structure
 
