1 #ifndef YOBAPERL_CALLBACKS_HPP 2 #define YOBAPERL_CALLBACKS_HPP 4 #include "yobaperl/common.hpp" 6 #include <unordered_map> 16 namespace yoba {
namespace priv {
20 class YOBAPERL_EXPORT Callbacks
31 using VoidToVoidCB = std::function<void(void)>;
32 using ScalarToVoidCB = std::function<void(Scalar)>;
33 using VoidToScalarCB = std::function<Scalar(void)>;
34 using ScalarToScalarCB = std::function<Scalar(Scalar)>;
36 Callbacks(Perl & perl);
37 Callbacks(
const Callbacks & to_copy);
38 Callbacks(Callbacks && to_move);
40 void setVoidToVoid(
const std::string & name, VoidToVoidCB
function);
41 void setScalarToVoid(
const std::string & name, ScalarToVoidCB
function);
42 void setVoidToScalar(
const std::string & name, VoidToScalarCB
function);
43 void setScalarToScalar(
const std::string & name, ScalarToScalarCB
function);
44 VoidToVoidCB getVoidToVoid(
const std::string & name);
45 ScalarToVoidCB getScalarToVoid(
const std::string & name);
46 VoidToScalarCB getVoidToScalar(
const std::string & name);
47 ScalarToScalarCB getScalarToScalar(
const std::string & name);
52 std::unordered_map<std::string, VoidToVoidCB> _callbacks_void_to_void;
53 std::unordered_map<std::string, ScalarToVoidCB> _callbacks_scalar_to_void;
54 std::unordered_map<std::string, VoidToScalarCB> _callbacks_void_to_scalar;
55 std::unordered_map<std::string, ScalarToScalarCB> _callbacks_scalar_to_scalar;
62 #endif // YOBAPERL_CALLBACKS_HPP