foreach by info internals

This commit is contained in:
BlackMATov
2021-07-01 01:44:41 +07:00
parent 4782c328be
commit 0d17759942
7 changed files with 113 additions and 0 deletions

View File

@@ -34,6 +34,48 @@ namespace meta_hpp
return id_;
}
template < typename F >
void each_class(F&& f) const {
for ( auto [_, info] : classes_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_field(F&& f) const {
for ( auto [_, info] : fields_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_function(F&& f) const {
for ( auto [_, info] : functions_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_method(F&& f) const {
for ( auto [_, info] : methods_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_variable(F&& f) const {
for ( auto [_, info] : variables_ ) {
std::invoke(f, info);
}
}
std::optional<class_info> get_class(std::string_view id) const {
return detail::find_opt(classes_, id);
}

View File

@@ -33,6 +33,13 @@ namespace meta_hpp
return value_;
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
std::optional<data_info> get_data(std::string_view id) const {
return detail::find_opt(datas_, id);
}

View File

@@ -83,6 +83,13 @@ namespace meta_hpp
return setter_(instance, std::forward<Value>(value));
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
std::optional<data_info> get_data(std::string_view id) const {
return detail::find_opt(datas_, id);
}

View File

@@ -88,6 +88,13 @@ namespace meta_hpp
return invoke_(vargs.data(), vargs.size());
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
std::optional<data_info> get_data(std::string_view id) const {
return detail::find_opt(datas_, id);
}

View File

@@ -150,6 +150,13 @@ namespace meta_hpp
return cinvoke_(instance, vargs.data(), vargs.size());
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
std::optional<data_info> get_data(std::string_view id) const {
return detail::find_opt(datas_, id);
}

View File

@@ -32,6 +32,42 @@ namespace meta_hpp
const std::string& id() const noexcept {
return id_;
}
template < typename F >
void each_class(F&& f) const {
for ( auto [_, info] : classes_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_function(F&& f) const {
for ( auto [_, info] : functions_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_namespace(F&& f) const {
for ( auto [_, info] : namespaces_ ) {
std::invoke(f, info);
}
}
template < typename F >
void each_variable(F&& f) const {
for ( auto [_, info] : variables_ ) {
std::invoke(f, info);
}
}
std::optional<class_info> get_class(std::string_view id) const {
return detail::find_opt(classes_, id);
}

View File

@@ -78,6 +78,13 @@ namespace meta_hpp
return setter_(std::forward<Value>(value));
}
template < typename F >
void each_data(F&& f) const {
for ( auto [_, info] : datas_ ) {
std::invoke(f, info);
}
}
std::optional<data_info> get_data(std::string_view id) const {
return detail::find_opt(datas_, id);
}