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