Add cpp_template_parameter_type
This commit is contained in:
parent
f75776df33
commit
d089dd97b7
3 changed files with 53 additions and 0 deletions
|
|
@ -78,6 +78,52 @@ namespace cppast
|
||||||
cpp_template_keyword keyword_;
|
cpp_template_keyword keyword_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// \exclude
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
struct cpp_template_parameter_ref_predicate
|
||||||
|
{
|
||||||
|
bool operator()(const cpp_entity& e);
|
||||||
|
};
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
/// Reference to a [cppast::cpp_template_type_parameter]().
|
||||||
|
using cpp_template_type_parameter_ref =
|
||||||
|
basic_cpp_entity_ref<cpp_template_type_parameter,
|
||||||
|
detail::cpp_template_parameter_ref_predicate>;
|
||||||
|
|
||||||
|
/// A [cppast::cpp_type]() defined by a [cppast::cpp_template_type_parameter]().
|
||||||
|
class cpp_template_parameter_type final : public cpp_type
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/// \returns A newly created parameter type.
|
||||||
|
static std::unique_ptr<cpp_template_parameter_type> build(
|
||||||
|
cpp_template_type_parameter_ref parameter)
|
||||||
|
{
|
||||||
|
return std::unique_ptr<cpp_template_parameter_type>(
|
||||||
|
new cpp_template_parameter_type(std::move(parameter)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \returns A reference to the [cppast::cpp_template_type_parameter]() this type refers to.
|
||||||
|
const cpp_template_type_parameter_ref& entity() const noexcept
|
||||||
|
{
|
||||||
|
return parameter_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
cpp_template_parameter_type(cpp_template_type_parameter_ref parameter)
|
||||||
|
: parameter_(std::move(parameter))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
cpp_type_kind do_get_kind() const noexcept override
|
||||||
|
{
|
||||||
|
return cpp_type_kind::template_parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
cpp_template_type_parameter_ref parameter_;
|
||||||
|
};
|
||||||
|
|
||||||
/// A [cppast::cpp_entity]() modelling a non-type template parameter.
|
/// A [cppast::cpp_entity]() modelling a non-type template parameter.
|
||||||
class cpp_non_type_template_parameter final : public cpp_template_parameter,
|
class cpp_non_type_template_parameter final : public cpp_template_parameter,
|
||||||
public cpp_variable_base
|
public cpp_variable_base
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ namespace cppast
|
||||||
member_function,
|
member_function,
|
||||||
member_object,
|
member_object,
|
||||||
|
|
||||||
|
template_parameter,
|
||||||
|
|
||||||
unexposed,
|
unexposed,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@ cpp_entity_kind cpp_template_type_parameter::do_get_entity_kind() const noexcept
|
||||||
return cpp_entity_kind::template_type_parameter_t;
|
return cpp_entity_kind::template_type_parameter_t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool detail::cpp_template_parameter_ref_predicate::operator()(const cpp_entity& e)
|
||||||
|
{
|
||||||
|
return e.kind() == cpp_entity_kind::template_type_parameter_t;
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<cpp_non_type_template_parameter> cpp_non_type_template_parameter::build(
|
std::unique_ptr<cpp_non_type_template_parameter> cpp_non_type_template_parameter::build(
|
||||||
const cpp_entity_index& idx, cpp_entity_id id, std::string name, std::unique_ptr<cpp_type> type,
|
const cpp_entity_index& idx, cpp_entity_id id, std::string name, std::unique_ptr<cpp_type> type,
|
||||||
bool is_variadic, std::unique_ptr<cpp_expression> default_value)
|
bool is_variadic, std::unique_ptr<cpp_expression> default_value)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue