Skip to content

Commit c2fff8a

Browse files
committed
organizing metadata: removing lambda_base.h, wip.
1 parent adb6f55 commit c2fff8a

14 files changed

+153
-164
lines changed

ReflectionTemplateLib/rtl/detail/inc/FunctionCaller.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ namespace rtl::detail
147147
pHopper.get_rhop().push_back(fn.get_hop());
148148
}
149149

150-
pHopper.get_overloads().push_back(&ty_meta.get_lambda());
150+
pHopper.get_overloads().push_back(&ty_meta.get_functor());
151151
pHopper.set_init_error(error::None);
152152
}
153153
if (isReturnTvoid) {

ReflectionTemplateLib/rtl/detail/inc/MethodInvoker.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ namespace rtl::detail
290290
pHopper.get_rhop().push_back(fn.get_hop());
291291
}
292292

293-
pHopper.get_overloads().push_back(&ty_meta.get_lambda());
293+
pHopper.get_overloads().push_back(&ty_meta.get_functor());
294294
pHopper.set_init_error(error::None);
295295
}
296296
if (isReturnTvoid) {

ReflectionTemplateLib/rtl/dispatch/aware_return.h

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
#pragma once
1313

1414
#include <any>
15-
#include "rtl_forward_decls.h"
15+
16+
#include "function_ptr.h"
1617

1718
namespace rtl::dispatch
1819
{
@@ -21,27 +22,23 @@ namespace rtl::dispatch
2122
{
2223
constexpr static auto get_lambda_void() noexcept
2324
{
24-
return [](const lambda_base& lambda, traits::normal_sign_t<signature_t>&&... params)-> auto
25+
return [](const functor& fn, traits::normal_sign_t<signature_t>&&... params)-> auto
2526
{
2627
if constexpr (std::is_void_v<return_t>)
2728
{
28-
auto fptr = lambda.template to_function<signature_t...>()
29-
.template get_functor<void>();
30-
29+
auto fptr = static_cast<const function_ptr<return_t, signature_t...>&>(fn).f_ptr();
3130
(*fptr)(std::forward<signature_t>(params)...);
3231
}
3332
};
3433
}
3534

3635
constexpr static auto get_lambda_any_return() noexcept
3736
{
38-
return [](const lambda_base& lambda, traits::normal_sign_t<signature_t>&&... params)-> auto
37+
return [](const functor& fn, traits::normal_sign_t<signature_t>&&... params)-> auto
3938
{
4039
if constexpr (!std::is_void_v<return_t>)
4140
{
42-
auto fptr = lambda.template to_function<signature_t...>()
43-
.template get_functor<return_t>();
44-
41+
auto fptr = static_cast<const function_ptr<return_t, signature_t...>&>(fn).f_ptr();
4542
auto&& ret_v = (*fptr)(std::forward<signature_t>(params)...);
4643

4744
if constexpr (std::is_pointer_v<return_t>)

ReflectionTemplateLib/rtl/dispatch/aware_return_n_target.h

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
#pragma once
1313

1414
#include <any>
15-
#include "rtl_forward_decls.h"
15+
16+
#include "method_ptr.h"
1617

1718
namespace rtl::dispatch
1819
{
@@ -22,12 +23,11 @@ namespace rtl::dispatch
2223
// erased-return-aware-target-function-void
2324
constexpr static auto e_return_a_target_fnv() noexcept
2425
{
25-
return [](const lambda_base& lambda, const record_t& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
26+
return [](const functor& fn, const record_t& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
2627
{
2728
if constexpr (std::is_void_v<return_t>)
2829
{
29-
auto mptr = lambda.template to_method<record_t, signature_t...>()
30-
.template get_functor<void>();
30+
auto mptr = static_cast<const method_ptr<record_t, return_t, signature_t...>&>(fn).f_ptr();
3131

3232
(const_cast<record_t&>(p_target).*mptr)(std::forward<signature_t>(params)...);
3333
}
@@ -37,15 +37,14 @@ namespace rtl::dispatch
3737
// erased-target-aware-return-function-void
3838
constexpr static auto e_target_a_return_fnv() noexcept
3939
{
40-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
40+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
4141
{
4242
if constexpr (std::is_void_v<return_t>)
4343
{
44-
auto mptr = lambda.template to_method<record_t, signature_t...>()
45-
.template get_functor<void>();
46-
4744
const auto& target = p_target.view<record_t>()->get();
4845

46+
auto mptr = static_cast<const method_ptr<record_t, return_t, signature_t...>&>(fn).f_ptr();
47+
4948
(const_cast<record_t&>(target).*mptr)(std::forward<signature_t>(params)...);
5049
}
5150
};
@@ -54,15 +53,14 @@ namespace rtl::dispatch
5453
// erased-return-erased-target-function-void
5554
constexpr static auto e_return_e_target_fnv() noexcept
5655
{
57-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
56+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
5857
{
5958
if constexpr (std::is_void_v<return_t>)
6059
{
61-
auto mptr = lambda.template to_method<record_t, signature_t...>()
62-
.template get_functor<void>();
63-
6460
const auto& target = p_target.view<record_t>()->get();
6561

62+
auto mptr = static_cast<const method_ptr<record_t, return_t, signature_t...>&>(fn).f_ptr();
63+
6664
(const_cast<record_t&>(target).*mptr)(std::forward<signature_t>(params)...);
6765
}
6866
};
@@ -71,15 +69,14 @@ namespace rtl::dispatch
7169
// erased-target-aware-return-function-returns(return_t)
7270
constexpr static auto e_target_a_return_fnr() noexcept
7371
{
74-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> return_t
72+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> return_t
7573
{
7674
if constexpr (!std::is_void_v<return_t>)
7775
{
78-
auto mptr = lambda.template to_method<record_t, signature_t...>()
79-
.template get_functor<return_t>();
80-
8176
const auto& target = p_target.view<record_t>()->get();
8277

78+
auto mptr = static_cast<const method_ptr<record_t, return_t, signature_t...>&>(fn).f_ptr();
79+
8380
return (const_cast<record_t&>(target).*mptr)(std::forward<signature_t>(params)...);
8481
}
8582
};
@@ -88,12 +85,11 @@ namespace rtl::dispatch
8885
// erased-return-aware-target-function-returns(std::any)
8986
constexpr static auto e_return_a_target_fnr() noexcept
9087
{
91-
return [](const lambda_base& lambda, const record_t& p_target, traits::normal_sign_t<signature_t>&&...params)-> auto
88+
return [](const functor& fn, const record_t& p_target, traits::normal_sign_t<signature_t>&&...params)-> auto
9289
{
9390
if constexpr (!std::is_void_v<return_t>)
9491
{
95-
auto mptr = lambda.template to_method<record_t, signature_t...>()
96-
.template get_functor<return_t>();
92+
auto mptr = static_cast<const method_ptr<record_t, return_t, signature_t...>&>(fn).f_ptr();
9793

9894
auto&& ret_v = (const_cast<record_t&>(p_target).*mptr)(std::forward<signature_t>(params)...);
9995

@@ -122,15 +118,14 @@ namespace rtl::dispatch
122118
// erased-return-erased-target-function-returns(std::any)
123119
constexpr static auto e_return_e_target_fnr() noexcept
124120
{
125-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
121+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
126122
{
127123
if constexpr (!std::is_void_v<return_t>)
128124
{
129-
auto mptr = lambda.template to_method<record_t, signature_t...>()
130-
.template get_functor<return_t>();
131-
132125
const auto& target = p_target.view<record_t>()->get();
133126

127+
auto mptr = static_cast<const method_ptr<record_t, return_t, signature_t...>&>(fn).f_ptr();
128+
134129
auto&& ret_v = (const_cast<record_t&>(target).*mptr)(std::forward<signature_t>(params)...);
135130

136131
if constexpr (std::is_pointer_v<return_t>)

ReflectionTemplateLib/rtl/dispatch/aware_return_n_target_const.h

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
#pragma once
1313

1414
#include <any>
15-
#include "rtl_forward_decls.h"
15+
16+
#include "method_ptr_const.h"
1617

1718
namespace rtl::dispatch
1819
{
@@ -22,12 +23,11 @@ namespace rtl::dispatch
2223
// erased-return-aware-target-function-void
2324
constexpr static auto e_return_a_target_fnv() noexcept
2425
{
25-
return [](const lambda_base& lambda, const record_t& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
26+
return [](const functor& fn, const record_t& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
2627
{
2728
if constexpr (std::is_void_v<return_t>)
2829
{
29-
auto mptr = lambda.template to_method<const record_t, signature_t...>()
30-
.template get_functor<void>();
30+
auto mptr = static_cast<const method_ptr<const record_t, return_t, signature_t...>&>(fn).f_ptr();
3131

3232
(p_target.*mptr)(std::forward<signature_t>(params)...);
3333
}
@@ -37,15 +37,14 @@ namespace rtl::dispatch
3737
// erased-target-aware-return-function-void
3838
constexpr static auto e_target_a_return_fnv() noexcept
3939
{
40-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
40+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
4141
{
4242
if constexpr (std::is_void_v<return_t>)
4343
{
44-
auto mptr = lambda.template to_method<const record_t, signature_t...>()
45-
.template get_functor<void>();
46-
4744
const auto& target = p_target.view<record_t>()->get();
4845

46+
auto mptr = static_cast<const method_ptr<const record_t, return_t, signature_t...>&>(fn).f_ptr();
47+
4948
(target.*mptr)(std::forward<signature_t>(params)...);
5049
}
5150
};
@@ -54,12 +53,11 @@ namespace rtl::dispatch
5453
// erased-return-erased-target-function-void
5554
constexpr static auto e_return_e_target_fnv() noexcept
5655
{
57-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
56+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
5857
{
5958
if constexpr (std::is_void_v<return_t>)
6059
{
61-
auto mptr = lambda.template to_method<const record_t, signature_t...>()
62-
.template get_functor<void>();
60+
auto mptr = static_cast<const method_ptr<const record_t, return_t, signature_t...>&>(fn).f_ptr();
6361

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

@@ -71,12 +69,11 @@ namespace rtl::dispatch
7169
// erased-target-aware-return-function-returns(return_t)
7270
constexpr static auto e_target_a_return_fnr() noexcept
7371
{
74-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> return_t
72+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> return_t
7573
{
7674
if constexpr (!std::is_void_v<return_t>)
7775
{
78-
auto mptr = lambda.template to_method<const record_t, signature_t...>()
79-
.template get_functor<return_t>();
76+
auto mptr = static_cast<const method_ptr<const record_t, return_t, signature_t...>&>(fn).f_ptr();
8077

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

@@ -88,12 +85,11 @@ namespace rtl::dispatch
8885
// erased-return-aware-target-function-returns(std::any)
8986
constexpr static auto e_return_a_target_fnr() noexcept
9087
{
91-
return [](const lambda_base& lambda, const record_t& p_target, traits::normal_sign_t<signature_t>&&...params)-> auto
88+
return [](const functor& fn, const record_t& p_target, traits::normal_sign_t<signature_t>&&...params)-> auto
9289
{
9390
if constexpr (!std::is_void_v<return_t>)
9491
{
95-
auto mptr = lambda.template to_method<const record_t, signature_t...>()
96-
.template get_functor<return_t>();
92+
auto mptr = static_cast<const method_ptr<const record_t, return_t, signature_t...>&>(fn).f_ptr();
9793

9894
auto&& ret_v = (p_target.*mptr)(std::forward<signature_t>(params)...);
9995

@@ -122,12 +118,11 @@ namespace rtl::dispatch
122118
// erased-return-erased-target-function-returns(std::any)
123119
constexpr static auto e_return_e_target_fnr() noexcept
124120
{
125-
return [](const lambda_base& lambda, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
121+
return [](const functor& fn, const RObject& p_target, traits::normal_sign_t<signature_t>&&... params)-> auto
126122
{
127123
if constexpr (!std::is_void_v<return_t>)
128124
{
129-
auto mptr = lambda.template to_method<const record_t, signature_t...>()
130-
.template get_functor<return_t>();
125+
auto mptr = static_cast<const method_ptr<const record_t, return_t, signature_t...>&>(fn).f_ptr();
131126

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

ReflectionTemplateLib/rtl/dispatch/function_lambda.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace rtl::dispatch
4444
template<class...args_t>
4545
struct function_lambda<fn_void::yes, erase::t_return, args_t...> : lambda
4646
{
47-
using lambda_t = std::function<void(const lambda_base&, traits::normal_sign_t<args_t>...)>;
47+
using lambda_t = std::function<void(const functor&, traits::normal_sign_t<args_t>...)>;
4848

4949
const lambda_t& get_hop() const {
5050
return m_lambda;
@@ -69,7 +69,7 @@ namespace rtl::dispatch
6969
template<class...args_t>
7070
struct function_lambda<fn_void::no, erase::t_return, args_t...> : lambda
7171
{
72-
using lambda_t = std::function<std::any(const lambda_base&, traits::normal_sign_t<args_t>...)>;
72+
using lambda_t = std::function<std::any(const functor&, traits::normal_sign_t<args_t>...)>;
7373

7474
const lambda_t& get_hop() const {
7575
return m_lambda;
@@ -94,7 +94,7 @@ namespace rtl::dispatch
9494
template<class...args_t>
9595
struct function_lambda<fn_void::yes, erase::t_method, args_t...> : lambda
9696
{
97-
using lambda_t = std::function<void(const lambda_base&, const RObject&, traits::normal_sign_t<args_t>...)>;
97+
using lambda_t = std::function<void(const functor&, const RObject&, traits::normal_sign_t<args_t>...)>;
9898

9999
const lambda_t& get_hop() const {
100100
return m_lambda;
@@ -119,7 +119,7 @@ namespace rtl::dispatch
119119
template<class...args_t>
120120
struct function_lambda<fn_void::no, erase::t_method, args_t...> : lambda
121121
{
122-
using lambda_t = std::function<std::any(const lambda_base&, const RObject&, traits::normal_sign_t<args_t>...)>;
122+
using lambda_t = std::function<std::any(const functor&, const RObject&, traits::normal_sign_t<args_t>...)>;
123123

124124
const lambda_t& get_hop() const {
125125
return m_lambda;

ReflectionTemplateLib/rtl/dispatch/function_ptr.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ namespace rtl::dispatch
3737

3838

3939
template<class return_t, class ...signature_t>
40-
void rtl::dispatch::function_ptr<return_t, signature_t...>::init_lambda()
40+
void function_ptr<return_t, signature_t...>::init_lambda()
4141
{
4242
m_lambda = func_t();
4343
func_t& fn = m_lambda.template emplace<func_t>();

ReflectionTemplateLib/rtl/dispatch/functor.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ namespace rtl::dispatch
1717
{
1818
struct functor
1919
{
20-
constexpr bool is_void() const {
21-
return m_is_void;
22-
}
20+
GETTER_BOOL(_void, m_is_void)
21+
GETTER_BOOL(_any_arg_ncref, m_is_any_arg_ncref)
22+
GETTER(traits::uid_t, _strict_sign_id, m_strict_args_id)
23+
GETTER(traits::uid_t, _normal_sign_id, m_normal_args_id)
24+
GETTER_CREF(detail::RObjectId, _robject_id, m_robject_id)
2325

2426
protected:
2527

ReflectionTemplateLib/rtl/dispatch/method_lambda.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace rtl::dispatch
1919
struct method_lambda<fn_void::yes, erase::t_return, known_t, args_t...> : lambda
2020
{
2121
using record_t = known_t;
22-
using lambda_t = std::function<void(const lambda_base&, const record_t&, traits::normal_sign_t<args_t>...)>;
22+
using lambda_t = std::function<void(const functor&, const record_t&, traits::normal_sign_t<args_t>...)>;
2323

2424
const lambda_t& get_hop() const {
2525
return m_lambda;
@@ -45,7 +45,7 @@ namespace rtl::dispatch
4545
struct method_lambda<fn_void::no, erase::t_return, known_t, args_t...> : lambda
4646
{
4747
using record_t = known_t;
48-
using lambda_t = std::function<std::any(const lambda_base&, const record_t&, traits::normal_sign_t<args_t>...)>;
48+
using lambda_t = std::function<std::any(const functor&, const record_t&, traits::normal_sign_t<args_t>...)>;
4949

5050
const lambda_t& get_hop() const {
5151
return m_lambda;
@@ -71,7 +71,7 @@ namespace rtl::dispatch
7171
struct method_lambda<fn_void::yes, erase::t_target, known_t, args_t...> : lambda
7272
{
7373
using return_t = known_t;
74-
using lambda_t = std::function<void(const lambda_base&, const rtl::RObject&, traits::normal_sign_t<args_t>...)>;
74+
using lambda_t = std::function<void(const functor&, const rtl::RObject&, traits::normal_sign_t<args_t>...)>;
7575

7676
const lambda_t& get_hop() const {
7777
return m_lambda;
@@ -97,7 +97,7 @@ namespace rtl::dispatch
9797
struct method_lambda<fn_void::no, erase::t_target, known_t, args_t...> : lambda
9898
{
9999
using return_t = known_t;
100-
using lambda_t = std::function<return_t(const lambda_base&, const rtl::RObject&, traits::normal_sign_t<args_t>...)>;
100+
using lambda_t = std::function<return_t(const functor&, const rtl::RObject&, traits::normal_sign_t<args_t>...)>;
101101

102102
const lambda_t& get_hop() const {
103103
return m_lambda;

0 commit comments

Comments
 (0)