Skip to content

Commit 47401bd

Browse files
committed
organizing metadata: method_const lambdas fix.
1 parent 5b31ef8 commit 47401bd

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

ReflectionTemplateLib/rtl/dispatch/method_ptr_const.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
#pragma once
1313

14-
#include <tuple>
15-
1614
#include "functor.h"
1715
#include "method_lambda.h"
1816

@@ -54,6 +52,7 @@ namespace rtl::dispatch
5452

5553
static constexpr auto fn_void_v = (std::is_void_v<return_t> ? fn_void::yes : fn_void::no);
5654

55+
function_lambda<fn_void_v, erase::t_method, signature_t...> m_erased_method;
5756
method_lambda<fn_void_v, erase::t_return, record_t, signature_t...> m_erased_return;
5857
method_lambda<fn_void_v, erase::t_target, return_t, signature_t...> m_erased_target;
5958

ReflectionTemplateLib/rtl/dispatch/method_ptr_const.hpp

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,39 @@ namespace rtl::dispatch
2323
if constexpr (fn_void_v == fn_void::yes)
2424
{
2525
{
26-
//const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_return_a_target_fnv();
27-
//m_erased_return.set_hop(fn);
26+
// erased-return-aware-target (e_return_a_target)
27+
const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_return_a_target_fnv();
28+
m_erased_return.set_hop(fn);
2829
} {
29-
//const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_target_a_return_fnv();
30-
//m_erased_target.set_hop(fn);
30+
// erased-target-aware-return (e_target_a_return)
31+
const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_target_a_return_fnv();
32+
m_erased_target.set_hop(fn);
33+
} {
34+
// erased-return-erased-target (e_return_e_target)
35+
const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_return_e_target_fnv();
36+
m_erased_method.set_hop(fn);
3137
}
3238
}
3339
else
3440
{
3541
{
36-
//const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_return_a_target_fnr();
37-
//m_erased_return.set_hop(fn);
42+
// erased-return-aware-target (e_return_a_target)
43+
const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_return_a_target_fnr();
44+
m_erased_return.set_hop(fn);
45+
} {
46+
// erased-target-aware-return (e_target_a_return)
47+
const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_target_a_return_fnr();
48+
m_erased_target.set_hop(fn);
3849
} {
39-
//const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_target_a_return_fnr();
40-
//m_erased_target.set_hop(fn);
50+
// erased-return-erased-target (e_return_e_target)
51+
const auto& fn = aware_return_n_target<const record_t, return_t, signature_t...>::e_return_e_target_fnr();
52+
m_erased_method.set_hop(fn);
4153
}
4254
}
4355

44-
functor::m_lambdas = std::vector<lambda*>(2);
56+
functor::m_lambdas = std::vector<lambda*>(3);
4557
functor::m_lambdas[index::erased_return] = (&m_erased_return);
4658
functor::m_lambdas[index::erased_target] = (&m_erased_target);
59+
functor::m_lambdas[index::erased_method] = (&m_erased_method);
4760
}
4861
}

ReflectionTemplateLib/rtl/erasure/aware_return_n_target_const.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ namespace rtl::dispatch
6464
{
6565
if constexpr (is_void)
6666
{
67-
auto mptr = lambda.template to_method<record_t, signature_t...>()
67+
auto mptr = lambda.template to_method<const record_t, signature_t...>()
6868
.template get_functor<void>();
6969

7070
(p_target.*mptr)(std::forward<signature_t>(params)...);
@@ -75,11 +75,11 @@ namespace rtl::dispatch
7575
// erased-target-aware-return-function-void
7676
constexpr static auto e_target_a_return_fnv() noexcept
7777
{
78-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> void
78+
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
7979
{
8080
if constexpr (is_void)
8181
{
82-
auto mptr = lambda.template to_method<record_t, signature_t...>()
82+
auto mptr = lambda.template to_method<const record_t, signature_t...>()
8383
.template get_functor<void>();
8484

8585
const auto& target = p_target.view<record_t>()->get();
@@ -96,7 +96,7 @@ namespace rtl::dispatch
9696
{
9797
if constexpr (is_void)
9898
{
99-
auto mptr = lambda.template to_method<record_t, signature_t...>()
99+
auto mptr = lambda.template to_method<const record_t, signature_t...>()
100100
.template get_functor<void>();
101101

102102
const auto& target = p_target.view<record_t>()->get();
@@ -113,7 +113,7 @@ namespace rtl::dispatch
113113
{
114114
if constexpr (!is_void)
115115
{
116-
auto mptr = lambda.template to_method<record_t, signature_t...>()
116+
auto mptr = lambda.template to_method<const record_t, signature_t...>()
117117
.template get_functor<return_t>();
118118

119119
const auto& target = p_target.view<record_t>()->get();
@@ -130,7 +130,7 @@ namespace rtl::dispatch
130130
{
131131
if constexpr (!is_void)
132132
{
133-
auto mptr = lambda.template to_method<record_t, signature_t...>()
133+
auto mptr = lambda.template to_method<const record_t, signature_t...>()
134134
.template get_functor<return_t>();
135135

136136
auto&& ret_v = (p_target.*mptr)(std::forward<signature_t>(params)...);
@@ -164,7 +164,7 @@ namespace rtl::dispatch
164164
{
165165
if constexpr (!is_void)
166166
{
167-
auto mptr = lambda.template to_method<record_t, signature_t...>()
167+
auto mptr = lambda.template to_method<const record_t, signature_t...>()
168168
.template get_functor<return_t>();
169169

170170
const auto& target = p_target.view<record_t>()->get();

0 commit comments

Comments
 (0)