From 88af191c70a3c5b33d1639bdd851ea4e175f6735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20M=C3=BCller?= Date: Fri, 7 Apr 2017 19:06:45 +0200 Subject: [PATCH] Clean kind check functions --- include/cppast/cpp_entity_kind.hpp | 12 ++++---- src/cpp_entity_kind.cpp | 47 ------------------------------ src/cpp_type.cpp | 44 +++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 54 deletions(-) diff --git a/include/cppast/cpp_entity_kind.hpp b/include/cppast/cpp_entity_kind.hpp index d0ee6e5..4019b89 100644 --- a/include/cppast/cpp_entity_kind.hpp +++ b/include/cppast/cpp_entity_kind.hpp @@ -65,21 +65,21 @@ namespace cppast /// \returns A human readable string describing the entity kind. const char* to_string(cpp_entity_kind kind) noexcept; - /// \returns Whether or not a given entity kind is a C++ type. - bool is_type(cpp_entity_kind kind) noexcept; - - /// \returns Whether or not a given entity kind is a C++ function. + /// \returns Whether or not a given entity kind is a C++ function, + /// that is, it dervies from [cppast::cpp_function_base](). bool is_function(cpp_entity_kind kind) noexcept; /// \returns Whether or not a given entity kind is a C++ (template) parameter. bool is_parameter(cpp_entity_kind kind) noexcept; - /// \returns Whether or not a given entity kind is a C++ template. + /// \returns Whether or not a given entity kind is a C++ template, + /// that is, it dervies from [cppast::cpp_template](). /// \notes A template template parameter is not considered a template for this function. /// \notes Template specializations are also considered templates here. bool is_template(cpp_entity_kind kind) noexcept; - /// \returns Whether or not a given entity kind is a specialization of a C++ template. + /// \returns Whether or not a given entity kind is a specialization of a C++ template, + /// that is, it derives from [cppast::cpp_template_specialization](). bool is_template_specialization(cpp_entity_kind kind) noexcept; } // namespace cppast diff --git a/src/cpp_entity_kind.cpp b/src/cpp_entity_kind.cpp index 6092868..11553cf 100644 --- a/src/cpp_entity_kind.cpp +++ b/src/cpp_entity_kind.cpp @@ -98,53 +98,6 @@ const char* cppast::to_string(cpp_entity_kind kind) noexcept return "invalid"; } -bool cppast::is_type(cpp_entity_kind kind) noexcept -{ - switch (kind) - { - case cpp_entity_kind::type_alias_t: - case cpp_entity_kind::enum_t: - case cpp_entity_kind::class_t: - return true; - - case cpp_entity_kind::file_t: - case cpp_entity_kind::macro_definition_t: - case cpp_entity_kind::include_directive_t: - case cpp_entity_kind::language_linkage_t: - case cpp_entity_kind::namespace_t: - case cpp_entity_kind::namespace_alias_t: - case cpp_entity_kind::using_directive_t: - case cpp_entity_kind::using_declaration_t: - case cpp_entity_kind::enum_value_t: - case cpp_entity_kind::access_specifier_t: - case cpp_entity_kind::base_class_t: - case cpp_entity_kind::variable_t: - case cpp_entity_kind::member_variable_t: - case cpp_entity_kind::bitfield_t: - case cpp_entity_kind::function_parameter_t: - case cpp_entity_kind::function_t: - case cpp_entity_kind::member_function_t: - case cpp_entity_kind::conversion_op_t: - case cpp_entity_kind::constructor_t: - case cpp_entity_kind::destructor_t: - case cpp_entity_kind::friend_t: - case cpp_entity_kind::template_type_parameter_t: - case cpp_entity_kind::non_type_template_parameter_t: - case cpp_entity_kind::template_template_parameter_t: - case cpp_entity_kind::alias_template_t: - case cpp_entity_kind::variable_template_t: - case cpp_entity_kind::function_template_t: - case cpp_entity_kind::function_template_specialization_t: - case cpp_entity_kind::class_template_t: - case cpp_entity_kind::class_template_specialization_t: - case cpp_entity_kind::unexposed_t: - case cpp_entity_kind::count: - break; - } - - return false; -} - bool cppast::is_function(cpp_entity_kind kind) noexcept { switch (kind) diff --git a/src/cpp_type.cpp b/src/cpp_type.cpp index 1f55d3d..3d3f670 100644 --- a/src/cpp_type.cpp +++ b/src/cpp_type.cpp @@ -76,7 +76,49 @@ const char* cppast::to_string(cpp_builtin_type_kind kind) noexcept bool detail::cpp_type_ref_predicate::operator()(const cpp_entity& e) { - return is_type(e.kind()); + switch (e.kind()) + { + case cpp_entity_kind::type_alias_t: + case cpp_entity_kind::enum_t: + case cpp_entity_kind::class_t: + return true; + + case cpp_entity_kind::file_t: + case cpp_entity_kind::macro_definition_t: + case cpp_entity_kind::include_directive_t: + case cpp_entity_kind::language_linkage_t: + case cpp_entity_kind::namespace_t: + case cpp_entity_kind::namespace_alias_t: + case cpp_entity_kind::using_directive_t: + case cpp_entity_kind::using_declaration_t: + case cpp_entity_kind::enum_value_t: + case cpp_entity_kind::access_specifier_t: + case cpp_entity_kind::base_class_t: + case cpp_entity_kind::variable_t: + case cpp_entity_kind::member_variable_t: + case cpp_entity_kind::bitfield_t: + case cpp_entity_kind::function_parameter_t: + case cpp_entity_kind::function_t: + case cpp_entity_kind::member_function_t: + case cpp_entity_kind::conversion_op_t: + case cpp_entity_kind::constructor_t: + case cpp_entity_kind::destructor_t: + case cpp_entity_kind::friend_t: + case cpp_entity_kind::template_type_parameter_t: + case cpp_entity_kind::non_type_template_parameter_t: + case cpp_entity_kind::template_template_parameter_t: + case cpp_entity_kind::alias_template_t: + case cpp_entity_kind::variable_template_t: + case cpp_entity_kind::function_template_t: + case cpp_entity_kind::function_template_specialization_t: + case cpp_entity_kind::class_template_t: + case cpp_entity_kind::class_template_specialization_t: + case cpp_entity_kind::unexposed_t: + case cpp_entity_kind::count: + break; + } + + return false; } std::unique_ptr cpp_dependent_type::build(