28 #include "casadi_misc.hpp"
29 #include "importer.hpp"
30 #include "serializer.hpp"
31 #include <casadi/config.h>
32 #include "casadi_os.hpp"
33 #include "casadi_meta.hpp"
38 uout() << s << std::flush;
42 uerr() << s << std::flush;
46 const std::string& op,
49 std::string signature =
"f";
50 Importer li(name + SHARED_LIBRARY_SUFFIX,
"dll");
51 std::string op_full = op +
"__" + signature;
54 casadi_error(
"Transformation '" + op +
"' not defined in library '" + name +
55 "' for the following signature: " + signature);
65 std::string s = ss.
encode();
66 const char* out = t(api_version, casadi_version.c_str(), s.c_str(),
69 casadi_error(
"Transformation '" + op +
"' defined in library '" + name +
81 const char* external_transform_test_success__f(
char api_version,
const char* casadi_version,
84 if (api_version != 0) {
85 cb_stderr(
"version mismatch");
92 std::string msg =
"passed options: " +
str(opts) +
"\n";
94 cb_stdout(msg.c_str());
96 cb_stdout(
"Doing a lot of stuff...\n");
97 cb_stderr(
"Warning here...\n");
101 static std::string s = ss.
encode();
106 const char* external_transform_test_fail__f(
char api_version,
const char* casadi_version,
109 cb_stdout(
"This is going to fail\n");
110 cb_stderr(
"Fatal error\n");
Function unpack_function()
signal_t get_function(const std::string &symname)
Get a function pointer for numerical evaluation.
void pack(const Sparsity &e)
std::string encode()
Returns a string that holds the serialized objects.
void callback_stdout(const char *s)
void(* external_print_callback_t)(const char *s)
const char *(* external_transform_t)(char api_version, const char *casadi_version, const char *in, external_print_callback_t cb_stdout, external_print_callback_t cb_stderr)
std::string str(const T &v)
String representation, any type.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
void callback_stderr(const char *s)
Function external_transform(const std::string &name, const std::string &op, const Function &f, const Dict &opts)
Apply a transformation defined externally.