1 #ifndef SIPLASPLAS_EXAMPLES_REFLECTION_MYCLASS_HPP 2 #define SIPLASPLAS_EXAMPLES_REFLECTION_MYCLASS_HPP 4 #include <siplasplas/reflection/api.hpp> 5 #include <siplasplas/reflection/dynamic/attributes/contract.hpp> 7 #include <siplasplas/utility/meta.hpp> 14 template<
typename... Args>
15 Bind(Args&&... args) :
16 _bindedArgs{std::make_pair(std::is_placeholder<std::decay_t<Args>>::value, std::forward<Args>(args))...}
19 std::vector<cpp::dynamic_reflection::Object> processArguments(
const std::vector<cpp::dynamic_reflection::Object>& args)
21 const std::size_t function_arity = _bindedArgs.size();
23 std::vector<cpp::dynamic_reflection::Object> finalArgs;
24 finalArgs.reserve(function_arity);
26 for(
auto&& arg : _bindedArgs)
30 finalArgs.emplace_back(args[arg.first - 1]);
34 finalArgs.emplace_back(arg.second);
42 std::vector<std::pair<int, cpp::dynamic_reflection::Object>> _bindedArgs;
47 template<
typename... Args>
48 auto bind(Args&&... args)
50 return std::make_shared<Bind>(std::forward<Args>(args)...);
61 $(cpp::drfl::attributes::contract(
62 [](
int a,
int b){
return a > 0; },
"a must be greater than zero",
63 [](
int r){
return true; },
"this must pass always" 70 int g(
int a,
int b,
int c,
int d)
94 std::string strField =
"hello";
96 std::vector<std::string> vector = {
"hello",
", ",
"world!"};
97 std::unordered_map<std::string, int> answers = {
99 {
"everything squared", 42*42}
101 std::tuple<int, std::string, InnerClass> tuple = std::make_tuple(
108 #include <reflection/examples/reflection/myclass.hpp> 110 #endif // SIPLASPLAS_EXAMPLES_REFLECTION_MYCLASS_HPP
Definition: myclass.hpp:58
Definition: myclass.hpp:11
Definition: myclass.hpp:76
Definition: myclass.hpp:45
Definition: attribute.hpp:19