List of all members | Public Types | Public Member Functions | Public Attributes | Protected Member Functions
casadi::ProtoFunction Class Referenceabstract

Base class for FunctionInternal and LinsolInternal. More...

#include <function_internal.hpp>

Detailed Description

Author
Joel Andersson
Date
2017

Extra doc: https://github.com/casadi/casadi/wiki/L_jc


List of available options
IdTypeDescriptionUsed in
error_on_failOT_BOOLThrow exceptions when function evaluation fails (default true).casadi::ProtoFunction
print_timeOT_BOOLprint information about execution time. Implies record_time.casadi::ProtoFunction
record_timeOT_BOOLrecord information about execution time, for retrieval with stats().casadi::ProtoFunction
regularity_checkOT_BOOLThrow exceptions when NaN or Inf appears during evaluationcasadi::ProtoFunction
verboseOT_BOOLVerbose evaluation – for debuggingcasadi::ProtoFunction

Definition at line 96 of file function_internal.hpp.

Inheritance diagram for casadi::ProtoFunction:
Inheritance graph
[legend]
Collaboration diagram for casadi::ProtoFunction:
Collaboration graph
[legend]

Public Types

using weak_ref_type = WeakRefInternal
 

Public Member Functions

 ProtoFunction (const std::string &name)
 Constructor. More...
 
 ~ProtoFunction () override=0
 Destructor. More...
 
void construct (const Dict &opts)
 Construct. More...
 
virtual Dict generate_options (const std::string &target) const
 Reconstruct options dict. More...
 
void print_options (std::ostream &stream) const
 Print list of options. More...
 
void print_option (const std::string &name, std::ostream &stream) const
 Print all information there is to know about a certain option. More...
 
bool has_option (const std::string &option_name) const
 Does a particular option exist. More...
 
virtual void change_option (const std::string &option_name, const GenericType &option_value)
 Change option after object creation for debugging. More...
 
virtual void init (const Dict &opts)
 Initialize. More...
 
virtual void finalize ()
 Finalize the object creation. More...
 
int checkout () const
 Checkout a memory object. More...
 
void release (int mem) const
 Release a memory object. More...
 
void * memory (int ind) const
 Memory objects. More...
 
bool has_memory (int ind) const
 Check for existance of memory object. More...
 
virtual void check_mem_count (casadi_int n) const
 Check for validatity of memory object count. More...
 
virtual void * alloc_mem () const
 Create memory block. More...
 
virtual int init_mem (void *mem) const
 Initalize memory block. More...
 
virtual void free_mem (void *mem) const
 Free memory block. More...
 
virtual Dict get_stats (void *mem) const
 Get all statistics. More...
 
void clear_mem ()
 Clear all memory (called from destructor) More...
 
void print (const char *fmt,...) const
 C-style formatted printing during evaluation. More...
 
void sprint (char *buf, size_t buf_sz, const char *fmt,...) const
 C-style formatted printing to string. More...
 
void format_time (char *buffer, double time) const
 Format time in a fixed width 8 format. More...
 
void print_time (const std::map< std::string, FStats > &fstats) const
 Print timing statistics. More...
 
void serialize (SerializingStream &s) const
 Serialize an object. More...
 
virtual void serialize_body (SerializingStream &s) const
 Serialize an object without type information. More...
 
virtual void serialize_type (SerializingStream &s) const
 Serialize type information. More...
 
virtual std::string serialize_base_function () const
 String used to identify the immediate FunctionInternal subclass. More...
 
virtual std::string class_name () const =0
 Readable name of the internal class. More...
 
virtual void disp (std::ostream &stream, bool more) const =0
 Print a description of the object. More...
 
casadi_int getCount () const
 Get the reference count. More...
 
std::string debug_repr (const SharedObjectInternal *) const
 
GenericWeakRef< SharedObject, SharedObjectInternal > * weak ()
 Get a weak reference to the object. More...
 

Public Attributes

std::string name_
 Name. More...
 
bool verbose_
 Verbose printout. More...
 
bool print_time_
 
bool record_time_
 
bool regularity_check_
 Errors are thrown when NaN is produced. More...
 
bool error_on_fail_
 Throw an exception on failure? More...
 

Protected Member Functions

 ProtoFunction (DeserializingStream &s)
 Deserializing constructor. More...
 
void initSingleton ()
 
void destroySingleton ()
 
B shared_from_this ()
 Get a shared object from the current internal object. More...
 
const B shared_from_this () const
 Get a shared object from the current internal object. More...
 
static const Options options_
 Options. More...
 
virtual const Options & get_options () const
 Options. More...
 

Member Typedef Documentation

◆ weak_ref_type

Definition at line 152 of file shared_object.hpp.

Constructor & Destructor Documentation

◆ ProtoFunction() [1/2]

casadi::ProtoFunction::ProtoFunction ( const std::string &  name)

Extra doc: https://github.com/casadi/casadi/wiki/L_jd

Definition at line 60 of file function_internal.cpp.

60  : name_(name) {
61  // Default options (can be overridden in derived classes)
62  verbose_ = false;
63  print_time_ = false;
64  record_time_ = false;
65  regularity_check_ = false;
66  error_on_fail_ = true;
67  }
bool error_on_fail_
Throw an exception on failure?
bool regularity_check_
Errors are thrown when NaN is produced.
bool verbose_
Verbose printout.

References error_on_fail_, print_time_, record_time_, regularity_check_, and verbose_.

◆ ~ProtoFunction()

casadi::ProtoFunction::~ProtoFunction ( )
overridepure virtual

Extra doc: https://github.com/casadi/casadi/wiki/L_je

Definition at line 126 of file function_internal.cpp.

126  {
127  for (void* m : mem_) {
128  if (m!=nullptr) casadi_warning("Memory object has not been properly freed");
129  }
130  mem_.clear();
131  }

◆ ProtoFunction() [2/2]

casadi::ProtoFunction::ProtoFunction ( DeserializingStream &  s)
explicitprotected

Extra doc: https://github.com/casadi/casadi/wiki/L_jz

Definition at line 4245 of file function_internal.cpp.

4245  {
4246  int version = s.version("ProtoFunction", 1, 2);
4247  s.unpack("ProtoFunction::name", name_);
4248  s.unpack("ProtoFunction::verbose", verbose_);
4249  s.unpack("ProtoFunction::print_time", print_time_);
4250  s.unpack("ProtoFunction::record_time", record_time_);
4251  if (version >= 2) s.unpack("ProtoFunction::regularity_check", regularity_check_);
4252  if (version >= 2) s.unpack("ProtoFunction::error_on_fail", error_on_fail_);
4253  }

References error_on_fail_, name_, print_time_, record_time_, regularity_check_, casadi::DeserializingStream::unpack(), verbose_, and casadi::DeserializingStream::version().

Member Function Documentation

◆ alloc_mem()

virtual void* casadi::ProtoFunction::alloc_mem ( ) const
inlinevirtual

Extra doc: https://github.com/casadi/casadi/wiki/L_jn

Reimplemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::Scpgen, casadi::Rosenbrock, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::Lsqr, casadi::LinsolTridiag, casadi::LinsolQr, casadi::LinsolLdl, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Erk, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::KinsolInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SnoptInterface, casadi::SlicotExpm, casadi::SlicotDple, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::OoqpInterface, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, 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::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, casadi::OracleFunction, casadi::OnnxFunction, casadi::Nlpsol, casadi::LinsolInternal, casadi::FixedStepIntegrator, casadi::FunctionInternal, and casadi::FmuFunction.

Definition at line 186 of file function_internal.hpp.

186 { return new ProtoFunctionMemory(); }

Referenced by checkout().

◆ change_option()

void casadi::ProtoFunction::change_option ( const std::string &  option_name,
const GenericType &  option_value 
)
virtual

Extra doc: https://github.com/casadi/casadi/wiki/L_jk

Reimplemented in casadi::SXFunction, casadi::MXFunction, casadi::FunctionInternal, and casadi::FmuFunction.

Definition at line 1124 of file function_internal.cpp.

1125  {
1126  if (option_name == "verbose") {
1127  verbose_ = option_value;
1128  } else if (option_name == "regularity_check") {
1129  regularity_check_ = option_value;
1130  } else {
1131  // Failure
1132  casadi_error("Option '" + option_name + "' cannot be changed");
1133  }
1134  }

References regularity_check_, and verbose_.

Referenced by casadi::FunctionInternal::change_option().

◆ check_mem_count()

virtual void casadi::ProtoFunction::check_mem_count ( casadi_int  n) const
inlinevirtual

Purpose if to allow more helpful error messages

Extra doc: https://github.com/casadi/casadi/wiki/L_2b7

Reimplemented in casadi::FmuFunction.

Definition at line 181 of file function_internal.hpp.

181 { }

Referenced by checkout().

◆ checkout()

int casadi::ProtoFunction::checkout ( ) const

Definition at line 3923 of file function_internal.cpp.

3923  {
3924 #ifdef CASADI_WITH_THREAD
3925  std::lock_guard<std::mutex> lock(mtx_);
3926 #endif //CASADI_WITH_THREAD
3927  if (unused_.empty()) {
3928  check_mem_count(mem_.size()+1);
3929  // Allocate a new memory object
3930  void* m = alloc_mem();
3931  mem_.push_back(m);
3932  if (init_mem(m)) {
3933  casadi_error("Failed to create or initialize memory object");
3934  }
3935  return static_cast<int>(mem_.size()) - 1;
3936  } else {
3937  // Use an unused memory object
3938  int m = unused_.top();
3939  unused_.pop();
3940  return m;
3941  }
3942  }
virtual int init_mem(void *mem) const
Initalize memory block.
virtual void * alloc_mem() const
Create memory block.
virtual void check_mem_count(casadi_int n) const
Check for validatity of memory object count.

References alloc_mem(), check_mem_count(), and init_mem().

Referenced by casadi::FunctionInternal::codegen_meta(), finalize(), and casadi::Sqpmethod::init_mem().

◆ class_name()

virtual std::string casadi::SharedObjectInternal::class_name ( ) const
pure virtualinherited

Implemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::ShellCompiler, casadi::Scpgen, casadi::RungeKutta, casadi::Rosenbrock, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::Lsqr, casadi::LinsolTridiag, casadi::LinsolQr, casadi::LinsolLdl, casadi::LinearInterpolantJac, casadi::LinearInterpolant, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Erk, 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::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::ClangCompiler, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, casadi::SXFunction, casadi::Switch, casadi::SparsityInternal, casadi::WeakRefInternal, casadi::ZipMemResource, casadi::ZipResource, casadi::TemporaryDirResource, casadi::DirResource, casadi::OptiNode, casadi::Nlpsol, casadi::MXNode, casadi::MXFunction, casadi::MapSum, casadi::ThreadMap, casadi::OmpMap, casadi::Map, casadi::JitFunction, casadi::Interpolant, casadi::DllLibrary, casadi::ImporterInternal, casadi::GraphModelInternal, casadi::GraphBuilderInternal, casadi::GenericTypeInternal< ID, T >, casadi::FmuFunction, casadi::Fmu3, casadi::Fmu2, casadi::Smoothing, casadi::CentralDiff, casadi::BackwardDiff, casadi::ForwardDiff, casadi::External, casadi::DaeBuilderInternal, casadi::CallbackInternal, and casadi::BlazingSplineFunction.

Referenced by casadi::FunctionInternal::call_forward(), casadi::FunctionInternal::call_reverse(), casadi::FunctionInternal::codegen_body(), construct(), casadi::FmuInternal::deserialize(), casadi::ResourceInternal::deserialize(), casadi::LinsolInternal::det(), casadi::FmuInternal::disp(), casadi::FunctionInternal::disp(), casadi::LinsolInternal::disp(), casadi::XmlFileInternal::dump(), casadi::FunctionInternal::eval(), casadi::FunctionInternal::eval_dm(), casadi::FunctionInternal::eval_sx(), casadi::FunctionInternal::export_code(), casadi::LinsolInternal::generate(), casadi::FunctionInternal::generate_dependencies(), casadi::LinsolInternal::generate_det(), casadi::Conic::generateNativeCode(), casadi::FmuInternal::get_adjoint_derivative(), casadi::FunctionInternal::get_forward(), casadi::FunctionInternal::get_function(), casadi::FunctionInternal::get_jacobian(), casadi::FunctionInternal::get_reverse(), casadi::FiniteDiff::init(), casadi::FunctionInternal::instruction_constant(), casadi::FunctionInternal::instruction_id(), casadi::FunctionInternal::instruction_input(), casadi::FunctionInternal::instruction_MX(), casadi::FunctionInternal::instruction_output(), casadi::FunctionInternal::instructions_sx(), casadi::LinsolInternal::linsol_eval_sx(), casadi::FunctionInternal::n_instructions(), casadi::FunctionInternal::n_nodes(), casadi::LinsolInternal::neig(), casadi::LinsolInternal::nfact(), casadi::FunctionInternal::open_trace(), casadi::FunctionInternal::oracle(), casadi::XmlFileInternal::parse(), casadi::ModelicaParserInternal::parse(), casadi::FmuInternal::serialize_type(), casadi::ResourceInternal::serialize_type(), casadi::FunctionInternal::simplify_passes(), and casadi::LinsolInternal::solve().

◆ clear_mem()

void casadi::ProtoFunction::clear_mem ( )

Extra doc: https://github.com/casadi/casadi/wiki/L_jq

Definition at line 3811 of file function_internal.cpp.

3811  {
3812  for (auto&& i : mem_) {
3813  if (i!=nullptr) free_mem(i);
3814  }
3815  mem_.clear();
3816  }
virtual void free_mem(void *mem) const
Free memory block.

References free_mem().

Referenced by casadi::AlpaqaInterface::~AlpaqaInterface(), casadi::AmplInterface::~AmplInterface(), casadi::BlazingSplineFunction::~BlazingSplineFunction(), casadi::Blocksqp::~Blocksqp(), casadi::BonminInterface::~BonminInterface(), casadi::BSplineInterpolant::~BSplineInterpolant(), casadi::CallbackInternal::~CallbackInternal(), casadi::CbcInterface::~CbcInterface(), casadi::ClarabelInterface::~ClarabelInterface(), casadi::ClpInterface::~ClpInterface(), casadi::ConoptInterface::~ConoptInterface(), casadi::CplexInterface::~CplexInterface(), casadi::CsparseInterface::~CsparseInterface(), casadi::CvodesInterface::~CvodesInterface(), casadi::DaqpInterface::~DaqpInterface(), casadi::Erk::~Erk(), casadi::External::~External(), casadi::FastNewton::~FastNewton(), casadi::FatropConicInterface::~FatropConicInterface(), casadi::FatropInterface::~FatropInterface(), casadi::Feasiblesqpmethod::~Feasiblesqpmethod(), casadi::FiniteDiff::~FiniteDiff(), casadi::FixedStepIntegrator::~FixedStepIntegrator(), casadi::FmuFunction::~FmuFunction(), casadi::GurobiInterface::~GurobiInterface(), casadi::HighsInterface::~HighsInterface(), casadi::HpipmInterface::~HpipmInterface(), casadi::HpmpcInterface::~HpmpcInterface(), casadi::IdasInterface::~IdasInterface(), casadi::ImplicitToNlp::~ImplicitToNlp(), casadi::IpoptInterface::~IpoptInterface(), casadi::Ipqp::~Ipqp(), casadi::JitFunction::~JitFunction(), casadi::KinsolInterface::~KinsolInterface(), casadi::KnitroInterface::~KnitroInterface(), casadi::LapackLu::~LapackLu(), casadi::LapackQr::~LapackQr(), casadi::LinearInterpolant::~LinearInterpolant(), casadi::LinearInterpolantJac::~LinearInterpolantJac(), casadi::LinsolLdl::~LinsolLdl(), casadi::LinsolQr::~LinsolQr(), casadi::LinsolTridiag::~LinsolTridiag(), casadi::Lsqr::~Lsqr(), casadi::Ma27Interface::~Ma27Interface(), casadi::MadmpecInterface::~MadmpecInterface(), casadi::MadnlpInterface::~MadnlpInterface(), casadi::Map::~Map(), casadi::MapSum::~MapSum(), casadi::MosekInterface::~MosekInterface(), casadi::MumpsInterface::~MumpsInterface(), casadi::MXFunction::~MXFunction(), casadi::Newton::~Newton(), casadi::Nlpsol::~Nlpsol(), casadi::OmpMap::~OmpMap(), casadi::OnnxFunction::~OnnxFunction(), casadi::OnnxRuntimeInterface::~OnnxRuntimeInterface(), casadi::OoqpInterface::~OoqpInterface(), casadi::OsqpInterface::~OsqpInterface(), casadi::PiqpInterface::~PiqpInterface(), casadi::ProxqpInterface::~ProxqpInterface(), casadi::QpoasesInterface::~QpoasesInterface(), casadi::QpToNlp::~QpToNlp(), casadi::Qrqp::~Qrqp(), casadi::Qrsqp::~Qrsqp(), casadi::Rosenbrock::~Rosenbrock(), casadi::Scpgen::~Scpgen(), casadi::SLEQPInterface::~SLEQPInterface(), casadi::SlicotDple::~SlicotDple(), casadi::SlicotExpm::~SlicotExpm(), casadi::SnoptInterface::~SnoptInterface(), casadi::Sqpmethod::~Sqpmethod(), casadi::SuperscsInterface::~SuperscsInterface(), casadi::Switch::~Switch(), casadi::SXFunction::~SXFunction(), casadi::SymbolicQr::~SymbolicQr(), casadi::ThreadMap::~ThreadMap(), casadi::UnoInterface::~UnoInterface(), casadi::WorhpInterface::~WorhpInterface(), and casadi::XpressInterface::~XpressInterface().

◆ construct()

void casadi::ProtoFunction::construct ( const Dict &  opts)

Prepares the function for evaluation

Extra doc: https://github.com/casadi/casadi/wiki/L_jf

Definition at line 141 of file function_internal.cpp.

141  {
142  // Sanitize dictionary is needed
143  if (!Options::is_sane(opts)) {
144  // Call recursively
146  return;
147  }
148 
149  // Make sure all options exist
150  get_options().check(opts);
151 
152  // Initialize the class hierarchy
153  try {
154  init(opts);
155  } catch(std::exception& e) {
156  casadi_error("Error calling " + class_name() + "::init for '" + name_ + "':\n"
157  + std::string(e.what()));
158  }
159 
160  // Revisit class hierarchy in reverse order
161  try {
162  finalize();
163  } catch(std::exception& e) {
164  casadi_error("Error calling " + class_name() + "::finalize for '" + name_ + "':\n"
165  + std::string(e.what()));
166  }
167  }
void construct(const Dict &opts)
Construct.
virtual const Options & get_options() const
Options.
virtual void init(const Dict &opts)
Initialize.
virtual void finalize()
Finalize the object creation.
virtual std::string class_name() const =0
Readable name of the internal class.
static bool is_sane(const Dict &opts)
Is the dictionary sane.
Definition: options.cpp:169
static Dict sanitize(const Dict &opts, bool top_level=true)
Sanitize a options dictionary.
Definition: options.cpp:173
void check(const Dict &opts) const
Check if options exist.
Definition: options.cpp:240

References casadi::Options::check(), casadi::SharedObjectInternal::class_name(), finalize(), get_options(), init(), casadi::Options::is_sane(), name_, and casadi::Options::sanitize().

Referenced by casadi::Function::create(), casadi::FmuFunction::factory(), casadi::FmuFunction::get_forward(), casadi::FmuFunction::get_jacobian(), casadi::LinearInterpolant::get_jacobian(), and casadi::FmuFunction::get_reverse().

◆ debug_repr()

std::string casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::debug_repr ( const Internal *  i) const
inherited

Definition at line 62 of file generic_shared_internal.hpp.

180  {
181  // Note: i != this because of something something multiple inheritance
182  return str( (casadi_int)(i)) + "/" + static_cast<const Internal*>(this)->class_name();
183  }
std::string str(const T &v)
String representation, any type.

◆ destroySingleton()

void casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::destroySingleton ( )
inlineprotectedinherited

Called in the destructor of singletons

Definition at line 77 of file generic_shared_internal.hpp.

77  {
78  static_cast<Internal*>(this)->count--;
79  }

◆ disp()

virtual void casadi::SharedObjectInternal::disp ( std::ostream &  stream,
bool  more 
) const
pure virtualinherited

◆ finalize()

void casadi::ProtoFunction::finalize ( )
virtual

This function, which visits the class hierarchy in reverse order is run after init() has been completed.

Extra doc: https://github.com/casadi/casadi/wiki/L_jm

Reimplemented in casadi::LinsolQr, casadi::PiqpInterface, casadi::OracleFunction, casadi::FunctionInternal, casadi::Conic, and casadi::CallbackInternal.

Definition at line 795 of file function_internal.cpp.

795  {
796  // Create memory object
797  int mem = checkout();
798  casadi_assert_dev(mem==0);
799  }
int checkout() const
Checkout a memory object.

References checkout().

Referenced by construct(), casadi::Linsol::deserialize(), casadi::FunctionInternal::finalize(), and casadi::LinsolQr::finalize().

◆ format_time()

void casadi::ProtoFunction::format_time ( char *  buffer,
double  time 
) const

Extra doc: https://github.com/casadi/casadi/wiki/L_jt

Definition at line 4129 of file function_internal.cpp.

4129  {
4130  // Always of width 8
4131  casadi_assert_dev(time>=0);
4132  double log_time = log10(time);
4133  int magn = static_cast<int>(floor(log_time));
4134  int iprefix = static_cast<int>(floor(log_time/3));
4135  if (iprefix<-4) {
4136  sprint(buffer, 10, " 0");
4137  return;
4138  }
4139  if (iprefix>=5) {
4140  sprint(buffer, 10, " inf");
4141  return;
4142  }
4143  char prefixes[] = "TGMk munp";
4144  char prefix = prefixes[4-iprefix];
4145 
4146  int rem = magn-3*iprefix;
4147  double time_normalized = time/pow(10, 3*iprefix);
4148 
4149  if (rem==0) {
4150  sprint(buffer, 10, " %1.2f%cs", time_normalized, prefix);
4151  } else if (rem==1) {
4152  sprint(buffer, 10, " %2.2f%cs", time_normalized, prefix);
4153  } else {
4154  sprint(buffer, 10, "%3.2f%cs", time_normalized, prefix);
4155  }
4156  }
void sprint(char *buf, size_t buf_sz, const char *fmt,...) const
C-style formatted printing to string.

References sprint().

Referenced by print_time().

◆ free_mem()

virtual void casadi::ProtoFunction::free_mem ( void *  mem) const
inlinevirtual

Extra doc: https://github.com/casadi/casadi/wiki/L_jp

Reimplemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::Scpgen, casadi::Rosenbrock, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::Lsqr, casadi::LinsolTridiag, casadi::LinsolQr, casadi::LinsolLdl, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Erk, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::KinsolInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SnoptInterface, casadi::SlicotExpm, casadi::SlicotDple, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::OoqpInterface, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, 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::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, casadi::OracleFunction, casadi::OnnxFunction, casadi::Nlpsol, casadi::LinsolInternal, casadi::FixedStepIntegrator, casadi::FunctionInternal, and casadi::FmuFunction.

Definition at line 196 of file function_internal.hpp.

196 { delete static_cast<ProtoFunctionMemory*>(mem); }

Referenced by clear_mem().

◆ generate_options()

Dict casadi::ProtoFunction::generate_options ( const std::string &  target) const
virtual

Reimplemented in casadi::SXFunction, casadi::MXFunction, and casadi::FunctionInternal.

Definition at line 383 of file function_internal.cpp.

383  {
384  Dict opts;
385  opts["verbose"] = verbose_;
386  opts["print_time"] = print_time_;
387  opts["record_time"] = record_time_;
388  opts["regularity_check"] = regularity_check_;
389  opts["error_on_fail"] = error_on_fail_;
390  return opts;
391  }
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.

References error_on_fail_, print_time_, record_time_, regularity_check_, and verbose_.

Referenced by casadi::FunctionInternal::generate_options().

◆ get_options()

virtual const Options& casadi::ProtoFunction::get_options ( ) const
inlinevirtual

Extra doc: https://github.com/casadi/casadi/wiki/L_jg

Reimplemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::Scpgen, casadi::Rosenbrock, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::LinsolQr, casadi::LinsolLdl, casadi::LinearInterpolant, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Erk, casadi::Collocation, casadi::BSplineInterpolant, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::SundialsInterface, casadi::KinsolInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SnoptInterface, casadi::SlicotDple, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::OoqpInterface, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, casadi::KnitroInterface, casadi::IpoptInterface, casadi::HpmpcInterface, casadi::HpipmInterface, casadi::HighsInterface, casadi::GurobiInterface, casadi::FatropInterface, casadi::FatropConicInterface, casadi::DaqpInterface, casadi::CplexInterface, casadi::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, casadi::SXFunction, casadi::RuntimeIntegrator, casadi::Rootfinder, casadi::OracleFunction, casadi::OnnxFunction, casadi::Nlpsol, casadi::MXFunction, casadi::JitFunction, casadi::Interpolant, casadi::ImplicitFixedStepIntegrator, casadi::FixedStepIntegrator, casadi::Integrator, casadi::FunctionInternal, casadi::FmuFunction, casadi::FiniteDiff, casadi::Expm, casadi::Dple, casadi::Conic, and casadi::BlazingSplineFunction.

Definition at line 120 of file function_internal.hpp.

120 { return options_;}
static const Options options_
Options.

Referenced by construct(), has_option(), print_option(), and print_options().

◆ get_stats()

Dict casadi::ProtoFunction::get_stats ( void *  mem) const
virtual

Reimplemented in casadi::Sqpmethod, casadi::Scpgen, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::SundialsInterface, casadi::KinsolInterface, casadi::SnoptInterface, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OoqpInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::KnitroInterface, casadi::IpoptInterface, casadi::HpmpcInterface, casadi::HpipmInterface, casadi::HighsInterface, casadi::GurobiInterface, casadi::FatropInterface, casadi::FatropConicInterface, casadi::DaqpInterface, casadi::CplexInterface, casadi::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::AlpaqaInterface, casadi::RuntimeIntegrator, casadi::Rootfinder, casadi::OracleFunction, casadi::Nlpsol, casadi::MXFunction, casadi::FunctionInternal, casadi::FmuFunction, and casadi::Conic.

Definition at line 3221 of file function_internal.cpp.

3221  {
3222  auto *m = static_cast<ProtoFunctionMemory*>(mem);
3223  // Add timing statistics
3224  Dict stats;
3225  for (const auto& s : m->fstats) {
3226  stats["n_call_" +s.first] = s.second.n_call;
3227  stats["t_wall_" +s.first] = s.second.t_wall;
3228  stats["t_proc_" +s.first] = s.second.t_proc;
3229  }
3230  return stats;
3231  }

Referenced by casadi::FunctionInternal::get_stats().

◆ getCount()

Definition at line 60 of file generic_shared_internal.hpp.

210  {
211  return static_cast<const Internal*>(this)->count;
212  }

◆ has_memory()

bool casadi::ProtoFunction::has_memory ( int  ind) const

Definition at line 3919 of file function_internal.cpp.

3919  {
3920  return ind<mem_.size();
3921  }

◆ has_option()

bool casadi::ProtoFunction::has_option ( const std::string &  option_name) const

Extra doc: https://github.com/casadi/casadi/wiki/L_jj

Definition at line 1120 of file function_internal.cpp.

1120  {
1121  return get_options().find(option_name) != nullptr;
1122  }
const Options::Entry * find(const std::string &name) const
Definition: options.cpp:32

References casadi::Options::find(), and get_options().

◆ init()

void casadi::ProtoFunction::init ( const Dict &  opts)
virtual

Initialize and make the object ready for setting arguments and evaluation. This method is typically called after setting options but before evaluating. If passed to another class (in the constructor), this class should invoke this function when initialized.

Extra doc: https://github.com/casadi/casadi/wiki/L_jl

Reimplemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::Scpgen, casadi::RungeKutta, casadi::Rosenbrock, casadi::Qrsqp, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::LinsolTridiag, casadi::LinsolQr, casadi::LinsolLdl, casadi::LinearInterpolantJac, casadi::LinearInterpolant, casadi::Ipqp, casadi::ImplicitToNlp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Erk, casadi::Collocation, casadi::BSplineInterpolant, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::SundialsInterface, casadi::KinsolInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SnoptInterface, casadi::SlicotExpm, casadi::SlicotDple, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::OoqpInterface, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, 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::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, casadi::XFunction< DerivedType, MatType, NodeType >, casadi::XFunction< MXFunction, MX, MXNode >, casadi::XFunction< SXFunction, Matrix< SXElem >, SXNode >, casadi::SXFunction, casadi::Switch, casadi::RuntimeIntegrator, casadi::Rootfinder, casadi::OracleFunction, casadi::OnnxFunction, casadi::Nlpsol, casadi::MXFunction, casadi::MapSum, casadi::ThreadMap, casadi::OmpMap, casadi::Map, casadi::LinsolInternal, casadi::JitFunction, casadi::Interpolant, casadi::ImplicitFixedStepIntegrator, casadi::FixedStepIntegrator, casadi::Integrator, casadi::FunctionInternal, casadi::FmuFunction, casadi::FiniteDiff, casadi::GenericExternal, casadi::External, casadi::Expm, casadi::Dple, casadi::Conic, casadi::CallbackInternal, and casadi::BlazingSplineFunction.

Definition at line 366 of file function_internal.cpp.

366  {
367  // Read options
368  for (auto&& op : opts) {
369  if (op.first=="verbose") {
370  verbose_ = op.second;
371  } else if (op.first=="print_time") {
372  print_time_ = op.second;
373  } else if (op.first=="record_time") {
374  record_time_ = op.second;
375  } else if (op.first=="regularity_check") {
376  regularity_check_ = op.second;
377  } else if (op.first=="error_on_fail") {
378  error_on_fail_ = op.second;
379  }
380  }
381  }

References error_on_fail_, print_time_, record_time_, regularity_check_, and verbose_.

Referenced by construct(), casadi::FunctionInternal::init(), and casadi::LinsolInternal::init().

◆ init_mem()

int casadi::ProtoFunction::init_mem ( void *  mem) const
virtual

Extra doc: https://github.com/casadi/casadi/wiki/L_jo

Reimplemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::Scpgen, casadi::Qrqp, casadi::Newton, casadi::Lsqr, casadi::LinsolTridiag, casadi::LinsolQr, casadi::LinsolLdl, casadi::Ipqp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::SundialsInterface, casadi::KinsolInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SnoptInterface, casadi::SlicotExpm, casadi::SlicotDple, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, 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::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AmplInterface, casadi::AlpaqaInterface, casadi::RuntimeIntegrator, casadi::Rootfinder, casadi::OracleFunction, casadi::Nlpsol, casadi::LinsolInternal, casadi::FixedStepIntegrator, casadi::Integrator, casadi::FmuFunction, and casadi::Conic.

Definition at line 928 of file function_internal.cpp.

928  {
929  auto *m = static_cast<ProtoFunctionMemory*>(mem);
930  if (record_time_) {
931  m->add_stat("total");
932  m->t_total = &m->fstats.at("total");
933  } else {
934  m->t_total = nullptr;
935  }
936  return 0;
937  }

References casadi::ProtoFunctionMemory::add_stat(), and record_time_.

Referenced by checkout(), casadi::FunctionInternal::codegen_checkout(), casadi::Conic::init_mem(), casadi::FmuFunction::init_mem(), casadi::LinsolInternal::init_mem(), casadi::OracleFunction::init_mem(), casadi::OnnxRuntimeInterface::init_mem(), casadi::SlicotDple::init_mem(), casadi::SlicotExpm::init_mem(), and casadi::OracleFunction::local_init_mem().

◆ initSingleton()

void casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::initSingleton ( )
inlineprotectedinherited

Called in the constructor of singletons to avoid that the counter reaches zero

Definition at line 71 of file generic_shared_internal.hpp.

71  {
72  casadi_assert_dev(static_cast<Internal*>(this)->count==0);
73  static_cast<Internal*>(this)->count++;
74  }

◆ memory()

void * casadi::ProtoFunction::memory ( int  ind) const

Definition at line 3912 of file function_internal.cpp.

3912  {
3913 #ifdef CASADI_WITH_THREAD
3914  std::lock_guard<std::mutex> lock(mtx_);
3915 #endif //CASADI_WITH_THREAD
3916  return mem_.at(ind);
3917  }

Referenced by casadi::FunctionInternal::call_gen(), casadi::FunctionInternal::get_jac_sparsity_gen(), casadi::FunctionInternal::get_jac_sparsity_hierarchical(), casadi::Sqpmethod::solve_ela_QP(), and casadi::Sqpmethod::solve_QP().

◆ print()

void casadi::ProtoFunction::print ( const char *  fmt,
  ... 
) const

Extra doc: https://github.com/casadi/casadi/wiki/L_jr

Definition at line 4170 of file function_internal.cpp.

4170  {
4171  // Variable number of arguments
4172  va_list args;
4173  va_start(args, fmt);
4174  // Static & dynamic buffers
4175  char buf[256];
4176  size_t buf_sz = sizeof(buf);
4177  char* buf_dyn = nullptr;
4178  // Try to print with a small buffer
4179  casadi_int n = vsnprintf(buf, buf_sz, fmt, args);
4180  // Need a larger buffer?
4181  if (n>static_cast<casadi_int>(buf_sz)) {
4182  buf_sz = static_cast<size_t>(n+1);
4183  buf_dyn = new char[buf_sz];
4184  n = vsnprintf(buf_dyn, buf_sz, fmt, args);
4185  }
4186  // Print buffer content
4187  if (n>=0) uout() << (buf_dyn ? buf_dyn : buf) << std::flush;
4188  // Cleanup
4189  delete[] buf_dyn;
4190  va_end(args);
4191  // Throw error if failure
4192  casadi_assert(n>=0, "Print failure while processing '" + std::string(fmt) + "'");
4193  }
std::ostream & uout()

References casadi::uout().

Referenced by casadi::Feasiblesqpmethod::anderson_acc_step_update(), casadi::Nlpsol::callback(), casadi::Blocksqp::convertHessian(), casadi::FmuFunction::eval_task(), casadi::Feasiblesqpmethod::feasibility_iterations(), casadi::Blocksqp::feasibilityRestorationPhase(), casadi::Blocksqp::fullstep(), casadi::Blocksqp::init(), casadi::Feasiblesqpmethod::init(), casadi::Ipqp::init(), casadi::Qrqp::init(), casadi::Qrsqp::init(), casadi::Sqpmethod::init(), casadi::LinsolQr::nfact(), casadi::Feasiblesqpmethod::print_iteration(), casadi::Qrsqp::print_iteration(), casadi::Sqpmethod::print_iteration(), casadi::SundialsInterface::print_stats(), print_time(), casadi::Blocksqp::printInfo(), casadi::Blocksqp::printProgress(), casadi::Blocksqp::run(), casadi::Blocksqp::solve(), casadi::Feasiblesqpmethod::solve(), casadi::Qrsqp::solve(), casadi::Sqpmethod::solve(), casadi::Sqpmethod::solve_ela_QP(), casadi::Feasiblesqpmethod::solve_LP(), casadi::Feasiblesqpmethod::solve_QP(), casadi::Qrsqp::solve_QP(), casadi::Sqpmethod::solve_QP(), and casadi::Blocksqp::solveQP().

◆ print_option()

void casadi::ProtoFunction::print_option ( const std::string &  name,
std::ostream &  stream 
) const

Extra doc: https://github.com/casadi/casadi/wiki/L_ji

Definition at line 1116 of file function_internal.cpp.

1116  {
1117  get_options().print_one(name, stream);
1118  }
void print_one(const std::string &name, std::ostream &stream) const
Print all information there is to know about a certain option.
Definition: options.cpp:274

References get_options(), and casadi::Options::print_one().

◆ print_options()

void casadi::ProtoFunction::print_options ( std::ostream &  stream) const

Extra doc: https://github.com/casadi/casadi/wiki/L_jh

Definition at line 1112 of file function_internal.cpp.

1112  {
1113  get_options().print_all(stream);
1114  }
void print_all(std::ostream &stream) const
Print list of options.
Definition: options.cpp:268

References get_options(), and casadi::Options::print_all().

◆ print_time()

void casadi::ProtoFunction::print_time ( const std::map< std::string, FStats > &  fstats) const

Extra doc: https://github.com/casadi/casadi/wiki/L_ju

Definition at line 4090 of file function_internal.cpp.

4090  {
4091  if (!print_time_) return;
4092  // Length of the name being printed
4093  size_t name_len=0;
4094  for (auto &&s : fstats) {
4095  name_len = std::max(s.first.size(), name_len);
4096  }
4097  name_len = std::max(name_.size(), name_len);
4098 
4099  // Print name with a given length. Format: "%NNs "
4100  char namefmt[10];
4101  sprint(namefmt, sizeof(namefmt), "%%%ds ", static_cast<casadi_int>(name_len));
4102 
4103  // Print header
4104  print(namefmt, name_.c_str());
4105 
4106  print(" : %8s %10s %8s %10s %9s\n", "t_proc", "(avg)", "t_wall", "(avg)", "n_eval");
4107 
4108 
4109  char buffer_proc[10];
4110  char buffer_wall[10];
4111  char buffer_proc_avg[10];
4112  char buffer_wall_avg[10];
4113 
4114  // Print keys
4115  for (const auto &s : fstats) {
4116  if (s.second.n_call!=0) {
4117  print(namefmt, s.first.c_str());
4118  format_time(buffer_proc, s.second.t_proc);
4119  format_time(buffer_wall, s.second.t_wall);
4120  format_time(buffer_proc_avg, s.second.t_proc/s.second.n_call);
4121  format_time(buffer_wall_avg, s.second.t_wall/s.second.n_call);
4122  print(" | %s (%s) %s (%s) %9d\n",
4123  buffer_proc, buffer_proc_avg,
4124  buffer_wall, buffer_wall_avg, s.second.n_call);
4125  }
4126  }
4127  }
void print(const char *fmt,...) const
C-style formatted printing during evaluation.
void format_time(char *buffer, double time) const
Format time in a fixed width 8 format.

References format_time(), name_, print(), print_time_, and sprint().

Referenced by casadi::FunctionInternal::eval_gen().

◆ release()

void casadi::ProtoFunction::release ( int  mem) const

Definition at line 3944 of file function_internal.cpp.

3944  {
3945 #ifdef CASADI_WITH_THREAD
3946  std::lock_guard<std::mutex> lock(mtx_);
3947 #endif //CASADI_WITH_THREAD
3948  unused_.push(mem);
3949  }

Referenced by casadi::FunctionInternal::codegen_meta().

◆ serialize()

void casadi::ProtoFunction::serialize ( SerializingStream &  s) const

Extra doc: https://github.com/casadi/casadi/wiki/L_jv

Definition at line 4467 of file function_internal.cpp.

4467  {
4468  serialize_type(s);
4469  serialize_body(s);
4470  }
virtual void serialize_type(SerializingStream &s) const
Serialize type information.
virtual void serialize_body(SerializingStream &s) const
Serialize an object without type information.

References serialize_body(), and serialize_type().

◆ serialize_base_function()

virtual std::string casadi::ProtoFunction::serialize_base_function ( ) const
inlinevirtual

◆ serialize_body()

void casadi::ProtoFunction::serialize_body ( SerializingStream &  s) const
virtual

Extra doc: https://github.com/casadi/casadi/wiki/L_jw

Reimplemented in casadi::SymbolicQr, casadi::Sqpmethod, casadi::RungeKutta, casadi::Rosenbrock, casadi::Qrqp, casadi::QpToNlp, casadi::Newton, casadi::LinsolQr, casadi::LinsolLdl, casadi::LinearInterpolant, casadi::Ipqp, casadi::Feasiblesqpmethod, casadi::FastNewton, casadi::Erk, casadi::Collocation, casadi::BSplineInterpolant, casadi::XpressInterface, casadi::WorhpInterface, casadi::UnoInterface, casadi::SuperscsInterface, casadi::SundialsInterface, casadi::IdasInterface, casadi::CvodesInterface, casadi::SnoptInterface, casadi::SLEQPInterface, casadi::QpoasesInterface, casadi::ProxqpInterface, casadi::PiqpInterface, casadi::OsqpInterface, casadi::OnnxRuntimeInterface, casadi::OoqpInterface, casadi::MumpsInterface, casadi::MosekInterface, casadi::MadnlpInterface, casadi::LapackQr, casadi::LapackLu, casadi::KnitroInterface, casadi::IpoptInterface, casadi::HpipmInterface, casadi::HighsInterface, casadi::GurobiInterface, casadi::FatropInterface, casadi::FatropConicInterface, casadi::DaqpInterface, casadi::CplexInterface, casadi::ConoptInterface, casadi::ClpInterface, casadi::ClarabelInterface, casadi::MadmpecInterface, casadi::CbcInterface, casadi::BonminInterface, casadi::Blocksqp, casadi::AlpaqaInterface, casadi::XFunction< DerivedType, MatType, NodeType >, casadi::XFunction< MXFunction, MX, MXNode >, casadi::XFunction< SXFunction, Matrix< SXElem >, SXNode >, casadi::SXFunction, casadi::Switch, casadi::RuntimeIntegrator, casadi::Rootfinder, casadi::OracleFunction, casadi::OnnxFunction, casadi::Nlpsol, casadi::MXFunction, casadi::MapSum, casadi::Map, casadi::LinsolInternal, casadi::Interpolant, casadi::ImplicitFixedStepIntegrator, casadi::FixedStepIntegrator, casadi::Integrator, casadi::FunctionInternal, casadi::FmuFunction, casadi::FiniteDiff, casadi::External, casadi::Conic, and casadi::BlazingSplineFunction.

Definition at line 4235 of file function_internal.cpp.

4235  {
4236  s.version("ProtoFunction", 2);
4237  s.pack("ProtoFunction::name", name_);
4238  s.pack("ProtoFunction::verbose", verbose_);
4239  s.pack("ProtoFunction::print_time", print_time_);
4240  s.pack("ProtoFunction::record_time", record_time_);
4241  s.pack("ProtoFunction::regularity_check", regularity_check_);
4242  s.pack("ProtoFunction::error_on_fail", error_on_fail_);
4243  }

References error_on_fail_, name_, casadi::SerializingStream::pack(), print_time_, record_time_, regularity_check_, verbose_, and casadi::SerializingStream::version().

Referenced by serialize(), casadi::FunctionInternal::serialize_body(), and casadi::LinsolInternal::serialize_body().

◆ serialize_type()

virtual void casadi::ProtoFunction::serialize_type ( SerializingStream &  s) const
inlinevirtual

◆ shared_from_this() [1/2]

B casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::shared_from_this ( )
inlineprotectedinherited

Definition at line 83 of file generic_shared_internal.hpp.

83  {
84  casadi_assert_dev(B::test_cast(static_cast<Internal*>(this)));
85  B ret;
86  ret.own(static_cast<Internal*>(this));
87  return ret;
88  }

◆ shared_from_this() [2/2]

const B casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::shared_from_this ( ) const
inlineprotectedinherited

Definition at line 92 of file generic_shared_internal.hpp.

92  {
93  casadi_assert_dev(B::test_cast(static_cast<const Internal*>(this)));
94  B ret;
95  ret.own(const_cast<Internal*>(static_cast<const Internal*>(this)));
96  return ret;
97  }

◆ sprint()

void casadi::ProtoFunction::sprint ( char *  buf,
size_t  buf_sz,
const char *  fmt,
  ... 
) const

Extra doc: https://github.com/casadi/casadi/wiki/L_js

Definition at line 4158 of file function_internal.cpp.

4158  {
4159  // Variable number of arguments
4160  va_list args;
4161  va_start(args, fmt);
4162  // Print to buffer
4163  casadi_int n = vsnprintf(buf, buf_sz, fmt, args);
4164  // Cleanup
4165  va_end(args);
4166  // Throw error if failure
4167  casadi_assert(n>=0 && n<buf_sz, "Print failure while processing '" + std::string(fmt) + "'");
4168  }

Referenced by format_time(), and print_time().

◆ weak()

Extra doc: https://github.com/casadi/casadi/wiki/L_1ai

Definition at line 67 of file generic_shared_internal.hpp.

215  {
216 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
217  auto* w = weak_ref_.load(std::memory_order_acquire);
218  if (!w) {
219  auto* nw = new GenericWeakRef<Shared, Internal>(static_cast<Internal*>(this));
220  GenericWeakRef<Shared, Internal>* expected = nullptr;
221  if (weak_ref_.compare_exchange_strong(
222  expected, nw, std::memory_order_release, std::memory_order_acquire)) {
223  w = nw;
224  } else {
225  delete nw; // lost the race; another thread published first
226  w = expected;
227  }
228  }
229  return w;
230 #else
231  if (weak_ref_==nullptr) {
232  weak_ref_ = new GenericWeakRef<Shared, Internal>(static_cast<Internal*>(this));
233  }
234  return weak_ref_;
235 #endif // CASADI_WITH_THREADSAFE_SYMBOLICS
236  }

Member Data Documentation

◆ error_on_fail_

bool casadi::ProtoFunction::error_on_fail_

◆ name_

std::string casadi::ProtoFunction::name_

Definition at line 248 of file function_internal.hpp.

Referenced by casadi::MXFunction::ad_forward(), casadi::SXFunction::ad_forward(), casadi::MXFunction::ad_reverse(), casadi::SXFunction::ad_reverse(), casadi::RuntimeIntegrator::advance_noevent(), casadi::Integrator::augmented_dae(), casadi::OracleFunction::calc_function(), casadi::FunctionInternal::call_forward(), casadi::FunctionInternal::call_reverse(), casadi::FunctionInternal::codegen_body(), casadi::External::codegen_body(), casadi::External::codegen_checkout(), casadi::External::codegen_declarations(), casadi::MXFunction::codegen_declarations(), casadi::SXFunction::codegen_declarations(), casadi::External::codegen_decref(), casadi::External::codegen_incref(), casadi::FunctionInternal::codegen_meta(), casadi::FunctionInternal::codegen_name(), casadi::External::codegen_release(), casadi::FunctionInternal::codegen_sparsities(), construct(), casadi::OracleFunction::create_function(), casadi::FunctionInternal::definition(), casadi::FunctionInternal::eval(), casadi::MXFunction::eval(), casadi::SXFunction::eval(), casadi::FunctionInternal::eval_mx(), casadi::MXFunction::eval_mx(), casadi::SXFunction::eval_mx(), casadi::SXFunction::eval_sx(), casadi::FmuFunction::factory(), casadi::FunctionInternal::finalize(), casadi::FunctionInternal::finish_trace(), casadi::FunctionInternal::forward(), casadi::FunctionInternal::FunctionInternal(), casadi::Integrator::get_forward(), casadi::Integrator::get_forward_dae(), casadi::Map::get_function(), casadi::MapSum::get_function(), casadi::OracleFunction::get_function(), casadi::GenericExternal::get_jac_sparsity(), casadi::BlazingSplineFunction::get_jacobian(), casadi::FunctionInternal::get_n_in(), casadi::External::get_n_in(), casadi::FunctionInternal::get_n_out(), casadi::External::get_n_out(), casadi::FunctionInternal::get_name_in(), casadi::External::get_name_in(), casadi::FunctionInternal::get_name_out(), casadi::External::get_name_out(), casadi::FunctionInternal::get_partition(), casadi::Integrator::get_reverse(), casadi::FunctionInternal::get_sparsity_in(), casadi::GenericExternal::get_sparsity_in(), casadi::FunctionInternal::get_sparsity_out(), casadi::GenericExternal::get_sparsity_out(), casadi::FunctionInternal::get_stats(), casadi::External::has_forward(), casadi::GenericExternal::has_jac_sparsity(), casadi::External::has_jacobian(), casadi::External::has_reverse(), casadi::RuntimeIntegrator::impulseB(), casadi::BlazingSplineFunction::init(), casadi::External::init(), casadi::FunctionInternal::init(), casadi::MXFunction::init(), casadi::SXFunction::init(), casadi::CvodesInterface::init(), casadi::IdasInterface::init(), casadi::External::init_external(), casadi::GenericExternal::init_external(), casadi::OnnxRuntimeInterface::init_mem(), casadi::FunctionInternal::jac_is_symm(), casadi::FunctionInternal::jacobian(), casadi::FunctionInternal::map(), casadi::OracleFunction::monitored(), casadi::FunctionInternal::open_trace(), casadi::MXFunction::print_arg(), casadi::SXFunction::print_arg(), casadi::FunctionInternal::print_in(), casadi::FunctionInternal::print_out(), casadi::MXFunction::print_res(), casadi::SXFunction::print_res(), print_time(), ProtoFunction(), casadi::CvodesInterface::reset(), casadi::IdasInterface::reset(), casadi::IdasInterface::resetB(), casadi::RuntimeIntegrator::retreat(), casadi::FunctionInternal::reverse(), serialize_body(), casadi::GurobiInterface::solve(), casadi::SnoptInterface::solve(), casadi::Integrator::sp_forward(), casadi::Integrator::sp_reverse(), casadi::FunctionInternal::wrap(), and casadi::FunctionInternal::wrap_as_needed().

◆ options_

const Options casadi::ProtoFunction::options_
static
Initial value:
= {{},
{{"verbose",
"Verbose evaluation -- for debugging"}},
{"print_time",
"print information about execution time. Implies record_time."}},
{"record_time",
"record information about execution time, for retrieval with stats()."}},
{"regularity_check",
"Throw exceptions when NaN or Inf appears during evaluation"}},
{"error_on_fail",
"Throw exceptions when function evaluation fails (default true)."}}
}
}

Extra doc: https://github.com/casadi/casadi/wiki/L_jg

Definition at line 119 of file function_internal.hpp.

Referenced by casadi::casadi_register_linsol_csparse(), casadi::casadi_register_linsol_lsqr(), casadi::casadi_register_linsol_ma27(), and casadi::casadi_register_linsol_tridiag().

◆ print_time_

bool casadi::ProtoFunction::print_time_

◆ record_time_

bool casadi::ProtoFunction::record_time_

◆ regularity_check_

bool casadi::ProtoFunction::regularity_check_

◆ verbose_

bool casadi::ProtoFunction::verbose_

Definition at line 251 of file function_internal.hpp.

Referenced by casadi::MXFunction::ad_forward(), casadi::SXFunction::ad_forward(), casadi::MXFunction::ad_reverse(), casadi::SXFunction::ad_reverse(), casadi::Integrator::advance(), casadi::RuntimeIntegrator::advance_noevent(), change_option(), casadi::BSplineInterpolant::construct_graph(), casadi::OracleFunction::create_function(), casadi::Integrator::eval(), casadi::MXFunction::eval(), casadi::SXFunction::eval(), casadi::MXFunction::eval_mx(), casadi::SXFunction::eval_mx(), casadi::SXFunction::eval_sx(), casadi::FmuFunction::factory(), casadi::FunctionInternal::finalize(), casadi::KinsolInterface::func(), casadi::CodeGenerator::generate_dump(), generate_options(), casadi::FmuFunction::get_forward(), casadi::Integrator::get_forward(), casadi::Integrator::get_forward_dae(), casadi::FunctionInternal::get_jac_sparsity_gen(), casadi::FunctionInternal::get_jac_sparsity_hierarchical(), casadi::FunctionInternal::get_jac_sparsity_hierarchical_symm(), casadi::FmuFunction::get_jacobian(), casadi::FunctionInternal::get_partition(), casadi::FmuFunction::get_reverse(), casadi::Integrator::get_reverse(), init(), casadi::FiniteDiff::init(), casadi::FmuFunction::init(), casadi::FunctionInternal::init(), casadi::MXFunction::init(), casadi::SXFunction::init(), casadi::Blocksqp::init(), casadi::MadmpecInterface::init(), casadi::FatropConicInterface::init(), casadi::FatropInterface::init(), casadi::HpipmInterface::init(), casadi::HpmpcInterface::init(), casadi::IpoptInterface::init(), casadi::MadnlpInterface::init(), casadi::CvodesInterface::init(), casadi::IdasInterface::init(), casadi::Feasiblesqpmethod::init(), casadi::Scpgen::init(), casadi::Sqpmethod::init(), casadi::IpoptInterface::init_mem(), casadi::MosekInterface::init_mem(), casadi::IdasInterface::init_mem(), casadi::UnoInterface::init_mem(), casadi::SXFunction::instructions_sx(), casadi::BonminInterface::intermediate_callback(), casadi::OracleFunction::jit_dependencies(), casadi::CsparseInterface::nfact(), casadi::LapackLu::nfact(), casadi::LapackQr::nfact(), casadi::LinsolQr::nfact(), casadi::Integrator::predict_events(), ProtoFunction(), casadi::CvodesInterface::reset(), casadi::IdasInterface::reset(), casadi::IdasInterface::resetB(), serialize_body(), casadi::CbcInterface::solve(), casadi::ClpInterface::solve(), casadi::CplexInterface::solve(), casadi::GurobiInterface::solve(), casadi::HpipmInterface::solve(), casadi::QpoasesInterface::solve(), casadi::Ipqp::solve(), casadi::Qrqp::solve(), casadi::AlpaqaInterface::solve(), casadi::AmplInterface::solve(), casadi::SnoptInterface::solve(), casadi::KinsolInterface::solve(), casadi::WorhpInterface::solve(), casadi::Newton::solve(), casadi::Qrsqp::solve(), casadi::Scpgen::solve(), casadi::Sqpmethod::solve(), casadi::Sqpmethod::solve_ela_QP(), casadi::Feasiblesqpmethod::solve_LP(), casadi::Feasiblesqpmethod::solve_QP(), casadi::Qrsqp::solve_QP(), casadi::Sqpmethod::solve_QP(), casadi::Integrator::sp_forward(), casadi::Integrator::sp_reverse(), and casadi::Integrator::trigger_event().


The documentation for this class was generated from the following files: