From a2f428bbb8a9891b7a27f93ce3f9f40cd4996484 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Thu, 12 Sep 2024 19:10:30 +0700 Subject: [PATCH] universal bind_ function --- develop/singles/headers/meta.hpp/meta_all.hpp | 80 ++++++++++++++++--- headers/meta.hpp/meta_binds.hpp | 80 ++++++++++++++++--- manuals/api.md | 1 + manuals/api/binds.md | 8 ++ 4 files changed, 147 insertions(+), 22 deletions(-) diff --git a/develop/singles/headers/meta.hpp/meta_all.hpp b/develop/singles/headers/meta.hpp/meta_all.hpp index d1911a4..e6bc780 100644 --- a/develop/singles/headers/meta.hpp/meta_all.hpp +++ b/develop/singles/headers/meta.hpp/meta_all.hpp @@ -5040,61 +5040,119 @@ namespace meta_hpp namespace meta_hpp { template < array_kind Array > - array_bind array_(metadata_map metadata = {}) { + array_bind bind_(metadata_map metadata = {}) { return array_bind{std::move(metadata)}; } template < class_kind Class > - class_bind class_(metadata_map metadata = {}) { + class_bind bind_(metadata_map metadata = {}) { return class_bind{std::move(metadata)}; } template < enum_kind Enum > - enum_bind enum_(metadata_map metadata = {}) { + enum_bind bind_(metadata_map metadata = {}) { return enum_bind{std::move(metadata)}; } template < function_kind Function > - function_bind function_(metadata_map metadata = {}) { + function_bind bind_(metadata_map metadata = {}) { return function_bind{std::move(metadata)}; } template < member_pointer_kind Member > - member_bind member_(metadata_map metadata = {}) { + member_bind bind_(metadata_map metadata = {}) { return member_bind{std::move(metadata)}; } template < method_pointer_kind Method > - method_bind method_(metadata_map metadata = {}) { + method_bind bind_(metadata_map metadata = {}) { return method_bind{std::move(metadata)}; } template < nullptr_kind Nullptr > - nullptr_bind nullptr_(metadata_map metadata = {}) { + nullptr_bind bind_(metadata_map metadata = {}) { return nullptr_bind{std::move(metadata)}; } template < number_kind Number > - number_bind number_(metadata_map metadata = {}) { + number_bind bind_(metadata_map metadata = {}) { return number_bind{std::move(metadata)}; } template < pointer_kind Pointer > - pointer_bind pointer_(metadata_map metadata = {}) { + pointer_bind bind_(metadata_map metadata = {}) { return pointer_bind{std::move(metadata)}; } template < reference_kind Reference > - reference_bind reference_(metadata_map metadata = {}) { + reference_bind bind_(metadata_map metadata = {}) { return reference_bind{std::move(metadata)}; } template < void_kind Void > - void_bind void_(metadata_map metadata = {}) { + void_bind bind_(metadata_map metadata = {}) { return void_bind{std::move(metadata)}; } } +namespace meta_hpp +{ + template < array_kind Array > + array_bind array_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < class_kind Class > + class_bind class_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < enum_kind Enum > + enum_bind enum_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < function_kind Function > + function_bind function_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < member_pointer_kind Member > + member_bind member_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < method_pointer_kind Method > + method_bind method_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < nullptr_kind Nullptr > + nullptr_bind nullptr_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < number_kind Number > + number_bind number_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < pointer_kind Pointer > + pointer_bind pointer_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < reference_kind Reference > + reference_bind reference_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < void_kind Void > + void_bind void_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } +} + namespace meta_hpp { inline scope_bind local_scope_(std::string name, metadata_map metadata = {}) { diff --git a/headers/meta.hpp/meta_binds.hpp b/headers/meta.hpp/meta_binds.hpp index e09b6f5..cfcd771 100644 --- a/headers/meta.hpp/meta_binds.hpp +++ b/headers/meta.hpp/meta_binds.hpp @@ -210,61 +210,119 @@ namespace meta_hpp namespace meta_hpp { template < array_kind Array > - array_bind array_(metadata_map metadata = {}) { + array_bind bind_(metadata_map metadata = {}) { return array_bind{std::move(metadata)}; } template < class_kind Class > - class_bind class_(metadata_map metadata = {}) { + class_bind bind_(metadata_map metadata = {}) { return class_bind{std::move(metadata)}; } template < enum_kind Enum > - enum_bind enum_(metadata_map metadata = {}) { + enum_bind bind_(metadata_map metadata = {}) { return enum_bind{std::move(metadata)}; } template < function_kind Function > - function_bind function_(metadata_map metadata = {}) { + function_bind bind_(metadata_map metadata = {}) { return function_bind{std::move(metadata)}; } template < member_pointer_kind Member > - member_bind member_(metadata_map metadata = {}) { + member_bind bind_(metadata_map metadata = {}) { return member_bind{std::move(metadata)}; } template < method_pointer_kind Method > - method_bind method_(metadata_map metadata = {}) { + method_bind bind_(metadata_map metadata = {}) { return method_bind{std::move(metadata)}; } template < nullptr_kind Nullptr > - nullptr_bind nullptr_(metadata_map metadata = {}) { + nullptr_bind bind_(metadata_map metadata = {}) { return nullptr_bind{std::move(metadata)}; } template < number_kind Number > - number_bind number_(metadata_map metadata = {}) { + number_bind bind_(metadata_map metadata = {}) { return number_bind{std::move(metadata)}; } template < pointer_kind Pointer > - pointer_bind pointer_(metadata_map metadata = {}) { + pointer_bind bind_(metadata_map metadata = {}) { return pointer_bind{std::move(metadata)}; } template < reference_kind Reference > - reference_bind reference_(metadata_map metadata = {}) { + reference_bind bind_(metadata_map metadata = {}) { return reference_bind{std::move(metadata)}; } template < void_kind Void > - void_bind void_(metadata_map metadata = {}) { + void_bind bind_(metadata_map metadata = {}) { return void_bind{std::move(metadata)}; } } +namespace meta_hpp +{ + template < array_kind Array > + array_bind array_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < class_kind Class > + class_bind class_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < enum_kind Enum > + enum_bind enum_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < function_kind Function > + function_bind function_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < member_pointer_kind Member > + member_bind member_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < method_pointer_kind Method > + method_bind method_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < nullptr_kind Nullptr > + nullptr_bind nullptr_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < number_kind Number > + number_bind number_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < pointer_kind Pointer > + pointer_bind pointer_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < reference_kind Reference > + reference_bind reference_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } + + template < void_kind Void > + void_bind void_(metadata_map metadata = {}) { + return bind_(std::move(metadata)); + } +} + namespace meta_hpp { inline scope_bind local_scope_(std::string name, metadata_map metadata = {}) { diff --git a/manuals/api.md b/manuals/api.md index 25e7c9a..b41a5b1 100644 --- a/manuals/api.md +++ b/manuals/api.md @@ -63,6 +63,7 @@ | | | | --------------------------------------------- | ------------- | +| [bind_](./api/binds.md#bind_) | bind_ | | [array_](./api/binds.md#array_) | array_ | | [class_](./api/binds.md#class_) | class_ | | [enum_](./api/binds.md#enum_) | enum_ | diff --git a/manuals/api/binds.md b/manuals/api/binds.md index c989f13..0c4567d 100644 --- a/manuals/api/binds.md +++ b/manuals/api/binds.md @@ -15,6 +15,7 @@ - [arguments\_bind](#arguments_bind) - [metadata\_bind](#metadata_bind) - [Functions](#functions) + - [bind\_](#bind_) - [array\_](#array_) - [class\_](#class_) - [enum\_](#enum_) @@ -242,6 +243,13 @@ public: ## Functions +### bind_ + +```cpp +template < typename T > +auto bind_(metadata_map metadata = {}); +``` + ### array_ ```cpp