LSPModeler Class¶
-
class
LSPModeler
¶ Modeler environment. Main class of the modeler library which enables the creation and manipulation of a virtual machine that can load and execute programs written in the LSP language.
See: localsolver::LocalSolver
See: LSPModule
Since: 10.0
Summary¶
LSPModeler |
Constructs a complete modeler environment. |
~LSPModeler |
Deletes this modeler environment and all associated objects. |
createSolver |
Returns a new LocalSolver instance that can be used to launch a module with the method LSPModule::run(). |
loadModule |
Loads a program written in LSP format into an LSPModule whose name corresponds to the provided filename (without path and . |
createModule |
Creates an empty module with the given name. |
getModule |
Returns the loaded module with the given name. |
createFunction |
Creates an external LSPFunction. |
createFunction |
Creates an external LSPFunction. |
createMap |
Creates an LSPMap. |
createNil |
Creates a nil value. |
createInt |
Creates an integer value. |
createDouble |
Creates a double value. |
createBool |
Creates a boolean value. |
createString |
Creates a string value. |
Functions¶
-
LSPModeler
::
LSPModeler
()¶ Constructs a complete modeler environment.
See: localsolver::LocalSolver
-
LSPModeler
::
~LSPModeler
()¶ Deletes this modeler environment and all associated objects. This also includes solvers created using the
LSPModeler::createSolver()
method.
-
LocalSolver
LSPModeler
::
createSolver
()¶ Returns a new LocalSolver instance that can be used to launch a module with the method
LSPModule::run()
.Returns: Solver. See: localsolver::LocalSolver
-
LSPModule
LSPModeler
::
loadModule
(const std::string &file)¶ Loads a program written in LSP format into an
LSPModule
whose name corresponds to the provided filename (without path and .lsp extension). The variables of the module can be manipulated through the associatedLSPModule
object.Parameters: file – Path to the file. Returns: Module created. See: LSPModule
-
LSPModule
LSPModeler
::
createModule
(const std::string &moduleName)¶ Creates an empty module with the given name. The variables of the module can then be manipulated through the associated
LSPModule
object.Parameters: moduleName – Module name. Returns: Module created. See: LSPModule
-
LSPModule
LSPModeler
::
getModule
(const std::string &moduleName)¶ Returns the loaded module with the given name. User loaded modules can be accessed as well as builtin modules like the JSON module or the CSV module:
LSPModule jsonModule = modeler.getModule("json");
The variables of the module can then be manipulated through the associated
LSPModule
object.Parameters: moduleName – Module name. Returns: Module loaded. See: LSPModule
-
LSPFunction
LSPModeler
::
createFunction
(LSPFunctor *functor)¶ Creates an external LSPFunction. The argument must be derived from
LSPFunctor
. When the function is called, the modeler instance will be made accessible to the function, as well as the arguments.For instance, the following example creates a simple function that accepts two arguments and returns the sum of both values. The generated function is then exposed in an LSP module under the name “myCustomFunction”:
class MyCustomFunction : public LSPFunctor { LSPValue call(LSPModeler& modeler, const LSPValue* args, int nbArgs) override { return modeler.createDouble(arguments[0].asDouble() + arguments[1].asDouble()); } }; MyCustomFunction customFunctor; module.setFunction("myCustomFunction", modeler.createFunction(&customFunctor));
Note: This method should only be used to expose functions used during the modeling process. You should not use this method to create a function that will be used during the resolution as anexternal function. In this case, you should instead use the solver API directly (see
localsolver::LSExternalFunction
)Parameters: functor – Implementation of the external function. Returns: Function created. See: LSPFunctor
See: LSPFunction
-
LSPFunction
LSPModeler
::
createFunction
(const std::string &name, LSPFunctor *functor)¶ Creates an external LSPFunction. The argument must be derived from
LSPFunctor
. When the function is called, the modeler instance will be made accessible to the function, as well as the arguments.For instance, the following example creates a simple function that accepts two arguments and returns the sum of both values. The generated function is then exposed in an LSP module under the name “myCustomFunction”:
class MyCustomFunction : public LSPFunctor { LSPValue call(LSPModeler& modeler, const LSPValue* arguments, int nbArguments) override { return modeler.createDouble(arguments[0].asDouble() + arguments[1].asDouble()); } }; MyCustomFunction customFunctor; module.setFunction("myCustomFunction", modeler.createFunction("myCustomFunction", &customFunctor));
Note: This method should only be used to expose functions used during the modeling process. You should not use this method to create a function that will be used during the resolution as an external function. In this case, you should instead use the solver API directly (see
localsolver::LSExternalFunction
)Parameters: - name – Name of the function. The name is only used to identify the function in the generated stack trace when an exception occurs. Once created, the function can be associated with any variable in any module, regardless of its name.
- functor – Implementation of the external function.
Returns: Function created.
See: See:
-
LSPMap
LSPModeler
::
createMap
()¶ Creates an
LSPMap
. A map is a data structure mapping keys to values that can also be used as an array-like structure. Keys and values can be of any type except nil. The map can be assigned to any variable in a module withLSPModule::setMap()
or can be part of another map withLSPMap::setMap()
.Returns: Map created. See: LSPMap
-
LSPValue
LSPModeler
::
createNil
()¶ Creates a nil value.
Returns: Created nil value. See: LSPValue
-
LSPValue
LSPModeler
::
createInt
(lsint value)¶ Creates an integer value. The value can be assigned to any variable in a module with
LSPModule::setValue()
or can be part of a map as key or value.Returns: Created integer value. See: LSPValue
-
LSPValue
LSPModeler
::
createDouble
(lsdouble value)¶ Creates a double value. The value can be assigned to any variable in a module with
LSPModule::setValue()
or can be part of a map as key or value.Returns: Created double value. See: LSPValue
-
LSPValue
LSPModeler
::
createBool
(bool value)¶ Creates a boolean value. Please note that there is no dedicated type for booleans in the modeler. They are simulated with integers: 1 denotes true and 0 denotes false. The created value can be assigned to any variable in a module with
LSPModule::setValue()
or can be part of a map as key or value.Returns: Created boolean value. See: LSPValue
-
LSPValue
LSPModeler
::
createString
(const std::string &value)¶ Creates a string value. The value can be assigned to any variable in a module with
LSPModule::setValue()
or can be part of a map as key or value.Returns: Created string value. See: LSPValue