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
© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.