Interface for accessing input and output data structures.
More...
#include <plugin_interface.hpp>
template<class Derived>
class casadi::PluginInterface< Derived >
- Author
- Joel Andersson
- Date
- 2013
Extra doc: https://github.com/casadi/casadi/wiki/L_rp
Definition at line 54 of file plugin_interface.hpp.
◆ RegFcn
◆ deps_version_check()
◆ deserialize()
◆ getPlugin()
Definition at line 295 of file plugin_interface.hpp.
297 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
298 std::lock_guard<std::mutex> lock(Derived::mutex_solvers_);
302 auto it=Derived::solvers_.find(pname);
305 if (it==Derived::solvers_.end()) {
307 it=Derived::solvers_.find(pname);
309 casadi_assert_dev(it!=Derived::solvers_.end());
static Plugin load_plugin(const std::string &pname, bool register_plugin=true, bool needs_lock=true)
Load a plugin dynamically.
◆ has_plugin()
Definition at line 134 of file plugin_interface.hpp.
136 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
137 std::lock_guard<std::mutex> lock(Derived::mutex_solvers_);
141 if (Derived::solvers_.
find(pname) != Derived::solvers_.end()) {
149 }
catch (CasadiException& ex) {
151 casadi_warning(ex.what());
std::vector< casadi_int > find(const std::vector< T > &v)
find nonzeros
References casadi::find(), and casadi::CasadiException::what().
◆ instantiate()
template<class Derived >
template<class Problem >
| Derived * casadi::PluginInterface< Derived >::instantiate |
( |
const std::string & |
fname, |
|
|
const std::string & |
pname, |
|
|
Problem |
problem |
|
) |
| |
|
static |
Definition at line 315 of file plugin_interface.hpp.
321 casadi_error(
"Plugin '" + pname +
"' is not found.");
static bool has_plugin(const std::string &pname, bool verbose=false)
Check if a plugin is available or can be loaded.
static Plugin & getPlugin(const std::string &pname)
Load and get the creator function.
◆ load_library()
◆ load_plugin()
Definition at line 207 of file plugin_interface.hpp.
210 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
215 if (Derived::solvers_.
find(pname) != Derived::solvers_.end()) {
216 casadi_warning(
"PluginInterface: Solver " + pname +
" is already in use. Ignored.");
227 casadi_error(
"WITH_DL option needed for dynamic loading");
233 std::string regName =
"casadi_register_" + Derived::infix_ +
"_" + pname;
235 std::string searchpath;
242 #pragma GCC diagnostic push
243 #pragma GCC diagnostic ignored "-Wcast-function-type"
245 reg =
reinterpret_cast<RegFcn>(GetProcAddress(handle, TEXT(regName.c_str())));
247 #pragma GCC diagnostic pop
255 reg =
reinterpret_cast<RegFcn>(dlsym(handle, regName.c_str()));
257 casadi_assert(reg!=
nullptr,
258 "PluginInterface::load_plugin: no \"" + regName +
"\" found in " + searchpath +
".");
263 if (register_plugin) {
static handle_t load_library(const std::string &libname, std::string &resultpath, bool global)
Load a library dynamically.
int(* RegFcn)(Plugin *plugin)
static Plugin pluginFromRegFcn(RegFcn regfcn)
Instantiate a Plugin struct from a factory function.
static void registerPlugin(const Plugin &plugin, bool needs_lock=true)
Register an integrator in the factory.
References casadi::find(), casadi::uerr(), and casadi::uout().
◆ plugin_deserialize()
◆ plugin_name()
Implemented in casadi::LinsolInternal, casadi::GraphModelInternal, casadi::SymbolicQr, casadi::Sqpmethod, casadi::ShellCompiler, casadi::Scpgen, casadi::RungeKutta, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::Lsqr, casadi::LinsolTridiag, casadi::LinsolQr, casadi::LinsolLdl, casadi::LinearInterpolant, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Collocation, casadi::BSplineInterpolant, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::TinyXmlInterface, casadi::SuperscsInterface, casadi::KinsolInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SqicInterface, casadi::SnoptInterface, casadi::SlicotExpm, casadi::SlicotDple, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::OoqpInterface, casadi::Onnx, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, casadi::LaceModelica, casadi::KnitroInterface, casadi::IpoptInterface, casadi::Ma27Interface, casadi::HpmpcInterface, casadi::HpipmInterface, casadi::HighsInterface, casadi::GurobiInterface, casadi::FatropInterface, casadi::FatropConicInterface, casadi::DaqpInterface, casadi::CsparseInterface, casadi::CSparseCholeskyInterface, casadi::CplexInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::ClangCompiler, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, and casadi::ImporterInternal.
Referenced by casadi::PluginInterface< Derived >::deserialize(), and casadi::PluginInterface< Derived >::serialize_type().
◆ plugin_options()
Definition at line 158 of file plugin_interface.hpp.
160 casadi_assert(op!=
nullptr,
"Plugin \"" + pname +
"\" does not support options");
◆ pluginFromRegFcn()
Definition at line 173 of file plugin_interface.hpp.
178 int flag = regfcn(&plugin);
179 casadi_assert(flag==0,
"Registration of plugin failed.");
◆ registerPlugin() [1/2]
Definition at line 278 of file plugin_interface.hpp.
280 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
285 typename std::map<std::string, Plugin>::iterator it=Derived::solvers_.find(plugin.name);
286 casadi_assert(it==Derived::solvers_.end(),
287 "Solver " +
str(plugin.name) +
" is already in use");
290 Derived::solvers_[plugin.name] = plugin;
std::string str(const T &v)
String representation, any type.
References casadi::PluginInterface< Derived >::Plugin::name, and casadi::str().
◆ registerPlugin() [2/2]
◆ serialize_type()
The documentation for this class was generated from the following file: