swig/Examples/test-suite/cpp11_std_function.i

33 lines
731 B
OpenEdge ABL

%module cpp11_std_function
%header %{
#include <functional>
#include <string>
#include <stdexcept>
%}
%include <std_string.i>
%include <std_function.i>
%include <exception.i>
%inline %{
std::function<bool(int, const std::string &)> pass_checker(int pass) {
return [pass](int passcode, const std::string &name) -> bool {
return passcode == pass && name == "Petka";
};
}
%}
%template(cpp_lambda) std::function<bool(int, const std::string &)>;
// Expose a wrapper function to call the functor
%inline %{
template <typename RET, typename... ARGS>
RET call_std_function(std::function<RET(ARGS...)> fn, ARGS ...args) {
return fn(args...);
}
%}
%template(call_function) call_std_function<bool, int, const std::string &>;