mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
Use gperf for process_metafunction.
It is now possible to also easily verify if the function declaration is right (e.g. check the return type and argument types), but haven't done that yet, only used in the common code to prepare arguments based on the argument types and their meaning for the eval_* functions.
This commit is contained in:
committed by
Marek Polacek
parent
7f23cad230
commit
80351da551
@@ -188,6 +188,24 @@ endif
|
||||
# This is the file that depends on the generated header file.
|
||||
cp/name-lookup.o: $(srcdir)/cp/std-name-hint.h
|
||||
|
||||
ifeq ($(ENABLE_MAINTAINER_RULES), true)
|
||||
# Special build rule. This is a maintainer rule, that is only
|
||||
# available when GCC is configured with --enable-maintainer-mode. In
|
||||
# other cases, it is not available to avoid triggering rebuilds if a
|
||||
# user has the source checked out with unusual timestamps.
|
||||
$(srcdir)/cp/metafns.h: $(srcdir)/cp/metafns.gperf
|
||||
else
|
||||
# We keep the rule so that you can still force a rebuild, even if you
|
||||
# didn't configure GCC with --enable-maintainer-mode, by manually
|
||||
# deleting the $(srcdir)/cp/metafns.h file.
|
||||
$(srcdir)/cp/metafns.h:
|
||||
endif
|
||||
cd $(srcdir)/cp; gperf -o -C -E -k '1,4,5,11,14,$$' -D -N find -L C++ \
|
||||
metafns.gperf --output-file metafns.h
|
||||
|
||||
# This is the file that depends on the generated header file.
|
||||
cp/reflect.o: $(srcdir)/cp/metafns.h
|
||||
|
||||
components_in_prev = "bfd opcodes binutils fixincludes gas gcc gmp mpfr mpc isl gold intl ld libbacktrace libcpp libcody libdecnumber libiberty libiberty-linker-plugin libiconv zlib lto-plugin libctf libsframe"
|
||||
components_in_prev_target = "libstdc++-v3 libsanitizer libvtv libgcc libbacktrace libphobos zlib libgomp libatomic"
|
||||
|
||||
|
||||
641
gcc/cp/metafns.gperf
Normal file
641
gcc/cp/metafns.gperf
Normal file
@@ -0,0 +1,641 @@
|
||||
%language=C++
|
||||
%define class-name metafn_lookup
|
||||
%struct-type
|
||||
%{
|
||||
/* Copyright (C) 2025 Free Software Foundation, Inc.
|
||||
Written by Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 3, or (at your option) any later
|
||||
version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
enum metafn_code {
|
||||
METAFN_OPERATOR_OF,
|
||||
METAFN_SYMBOL_OF,
|
||||
METAFN_U8SYMBOL_OF,
|
||||
METAFN_HAS_IDENTIFIER,
|
||||
METAFN_IDENTIFIER_OF,
|
||||
METAFN_U8IDENTIFIER_OF,
|
||||
METAFN_DISPLAY_STRING_OF,
|
||||
METAFN_U8DISPLAY_STRING_OF,
|
||||
METAFN_SOURCE_LOCATION_OF,
|
||||
METAFN_TYPE_OF,
|
||||
METAFN_OBJECT_OF,
|
||||
METAFN_CONSTANT_OF,
|
||||
METAFN_IS_PUBLIC,
|
||||
METAFN_IS_PROTECTED,
|
||||
METAFN_IS_PRIVATE,
|
||||
METAFN_IS_VIRTUAL,
|
||||
METAFN_IS_PURE_VIRTUAL,
|
||||
METAFN_IS_OVERRIDE,
|
||||
METAFN_IS_FINAL,
|
||||
METAFN_IS_DELETED,
|
||||
METAFN_IS_DEFAULTED,
|
||||
METAFN_IS_USER_PROVIDED,
|
||||
METAFN_IS_USER_DECLARED,
|
||||
METAFN_IS_EXPLICIT,
|
||||
METAFN_IS_NOEXCEPT,
|
||||
METAFN_IS_BIT_FIELD,
|
||||
METAFN_IS_ENUMERATOR,
|
||||
METAFN_IS_ANNOTATION,
|
||||
METAFN_IS_CONST,
|
||||
METAFN_IS_VOLATILE,
|
||||
METAFN_IS_MUTABLE_MEMBER,
|
||||
METAFN_IS_LVALUE_REFERENCE_QUALIFIED,
|
||||
METAFN_IS_RVALUE_REFERENCE_QUALIFIED,
|
||||
METAFN_HAS_STATIC_STORAGE_DURATION,
|
||||
METAFN_HAS_THREAD_STORAGE_DURATION,
|
||||
METAFN_HAS_AUTOMATIC_STORAGE_DURATION,
|
||||
METAFN_HAS_INTERNAL_LINKAGE,
|
||||
METAFN_HAS_MODULE_LINKAGE,
|
||||
METAFN_HAS_EXTERNAL_LINKAGE,
|
||||
METAFN_HAS_C_LANGUAGE_LINKAGE,
|
||||
METAFN_HAS_LINKAGE,
|
||||
METAFN_IS_COMPLETE_TYPE,
|
||||
METAFN_IS_ENUMERABLE_TYPE,
|
||||
METAFN_IS_VARIABLE,
|
||||
METAFN_IS_TYPE,
|
||||
METAFN_IS_NAMESPACE,
|
||||
METAFN_IS_TYPE_ALIAS,
|
||||
METAFN_IS_NAMESPACE_ALIAS,
|
||||
METAFN_IS_FUNCTION,
|
||||
METAFN_IS_CONVERSION_FUNCTION,
|
||||
METAFN_IS_OPERATOR_FUNCTION,
|
||||
METAFN_IS_LITERAL_OPERATOR,
|
||||
METAFN_IS_SPECIAL_MEMBER_FUNCTION,
|
||||
METAFN_IS_CONSTRUCTOR,
|
||||
METAFN_IS_DEFAULT_CONSTRUCTOR,
|
||||
METAFN_IS_COPY_CONSTRUCTOR,
|
||||
METAFN_IS_MOVE_CONSTRUCTOR,
|
||||
METAFN_IS_ASSIGNMENT,
|
||||
METAFN_IS_COPY_ASSIGNMENT,
|
||||
METAFN_IS_MOVE_ASSIGNMENT,
|
||||
METAFN_IS_DESTRUCTOR,
|
||||
METAFN_IS_FUNCTION_PARAMETER,
|
||||
METAFN_IS_EXPLICIT_OBJECT_PARAMETER,
|
||||
METAFN_HAS_DEFAULT_ARGUMENT,
|
||||
METAFN_HAS_ELLIPSIS_PARAMETER,
|
||||
METAFN_IS_TEMPLATE,
|
||||
METAFN_IS_FUNCTION_TEMPLATE,
|
||||
METAFN_IS_VARIABLE_TEMPLATE,
|
||||
METAFN_IS_CLASS_TEMPLATE,
|
||||
METAFN_IS_ALIAS_TEMPLATE,
|
||||
METAFN_IS_CONVERSION_FUNCTION_TEMPLATE,
|
||||
METAFN_IS_OPERATOR_FUNCTION_TEMPLATE,
|
||||
METAFN_IS_LITERAL_OPERATOR_TEMPLATE,
|
||||
METAFN_IS_CONSTRUCTOR_TEMPLATE,
|
||||
METAFN_IS_CONCEPT,
|
||||
METAFN_IS_VALUE,
|
||||
METAFN_IS_OBJECT,
|
||||
METAFN_IS_STRUCTURED_BINDING,
|
||||
METAFN_IS_CLASS_MEMBER,
|
||||
METAFN_IS_NAMESPACE_MEMBER,
|
||||
METAFN_IS_NONSTATIC_DATA_MEMBER,
|
||||
METAFN_IS_STATIC_MEMBER,
|
||||
METAFN_IS_BASE,
|
||||
METAFN_HAS_DEFAULT_MEMBER_INITIALIZER,
|
||||
METAFN_HAS_PARENT,
|
||||
METAFN_PARENT_OF,
|
||||
METAFN_DEALIAS,
|
||||
METAFN_HAS_TEMPLATE_ARGUMENTS,
|
||||
METAFN_TEMPLATE_OF,
|
||||
METAFN_TEMPLATE_ARGUMENTS_OF,
|
||||
METAFN_PARAMETERS_OF,
|
||||
METAFN_VARIABLE_OF,
|
||||
METAFN_RETURN_TYPE_OF,
|
||||
METAFN_IS_ACCESSIBLE,
|
||||
METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS,
|
||||
METAFN_HAS_INACCESSIBLE_BASES,
|
||||
METAFN_HAS_INACCESSIBLE_SUBOBJECTS,
|
||||
METAFN_MEMBERS_OF,
|
||||
METAFN_BASES_OF,
|
||||
METAFN_STATIC_DATA_MEMBERS_OF,
|
||||
METAFN_NONSTATIC_DATA_MEMBERS_OF,
|
||||
METAFN_SUBOBJECTS_OF,
|
||||
METAFN_ENUMERATORS_OF,
|
||||
METAFN_OFFSET_OF,
|
||||
METAFN_SIZE_OF,
|
||||
METAFN_ALIGNMENT_OF,
|
||||
METAFN_BIT_SIZE_OF,
|
||||
METAFN_EXTRACT,
|
||||
METAFN_CAN_SUBSTITUTE,
|
||||
METAFN_SUBSTITUTE,
|
||||
METAFN_REFLECT_CONSTANT,
|
||||
METAFN_REFLECT_OBJECT,
|
||||
METAFN_REFLECT_FUNCTION,
|
||||
METAFN_REFLECT_CONSTANT_STRING,
|
||||
METAFN_REFLECT_CONSTANT_ARRAY,
|
||||
METAFN_DATA_MEMBER_SPEC,
|
||||
METAFN_IS_DATA_MEMBER_SPEC,
|
||||
METAFN_DEFINE_AGGREGATE,
|
||||
METAFN_IS_VOID_TYPE,
|
||||
METAFN_IS_NULL_POINTER_TYPE,
|
||||
METAFN_IS_INTEGRAL_TYPE,
|
||||
METAFN_IS_FLOATING_POINT_TYPE,
|
||||
METAFN_IS_ARRAY_TYPE,
|
||||
METAFN_IS_POINTER_TYPE,
|
||||
METAFN_IS_LVALUE_REFERENCE_TYPE,
|
||||
METAFN_IS_RVALUE_REFERENCE_TYPE,
|
||||
METAFN_IS_MEMBER_OBJECT_POINTER_TYPE,
|
||||
METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE,
|
||||
METAFN_IS_ENUM_TYPE,
|
||||
METAFN_IS_UNION_TYPE,
|
||||
METAFN_IS_CLASS_TYPE,
|
||||
METAFN_IS_FUNCTION_TYPE,
|
||||
METAFN_IS_REFLECTION_TYPE,
|
||||
METAFN_IS_REFERENCE_TYPE,
|
||||
METAFN_IS_ARITHMETIC_TYPE,
|
||||
METAFN_IS_FUNDAMENTAL_TYPE,
|
||||
METAFN_IS_OBJECT_TYPE,
|
||||
METAFN_IS_SCALAR_TYPE,
|
||||
METAFN_IS_COMPOUND_TYPE,
|
||||
METAFN_IS_MEMBER_POINTER_TYPE,
|
||||
METAFN_IS_CONST_TYPE,
|
||||
METAFN_IS_VOLATILE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_COPYABLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_RELOCATABLE_TYPE,
|
||||
METAFN_IS_REPLACEABLE_TYPE,
|
||||
METAFN_IS_STANDARD_LAYOUT_TYPE,
|
||||
METAFN_IS_EMPTY_TYPE,
|
||||
METAFN_IS_POLYMORPHIC_TYPE,
|
||||
METAFN_IS_ABSTRACT_TYPE,
|
||||
METAFN_IS_FINAL_TYPE,
|
||||
METAFN_IS_AGGREGATE_TYPE,
|
||||
METAFN_IS_CONSTEVAL_ONLY_TYPE,
|
||||
METAFN_IS_SIGNED_TYPE,
|
||||
METAFN_IS_UNSIGNED_TYPE,
|
||||
METAFN_IS_BOUNDED_ARRAY_TYPE,
|
||||
METAFN_IS_UNBOUNDED_ARRAY_TYPE,
|
||||
METAFN_IS_SCOPED_ENUM_TYPE,
|
||||
METAFN_IS_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_COPY_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_COPY_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_MOVE_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_SWAPPABLE_WITH_TYPE,
|
||||
METAFN_IS_SWAPPABLE_TYPE,
|
||||
METAFN_IS_DESTRUCTIBLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE,
|
||||
METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE,
|
||||
METAFN_IS_NOTHROW_SWAPPABLE_TYPE,
|
||||
METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_RELOCATABLE_TYPE,
|
||||
METAFN_IS_IMPLICIT_LIFETIME_TYPE,
|
||||
METAFN_HAS_VIRTUAL_DESTRUCTOR,
|
||||
METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS,
|
||||
METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY,
|
||||
METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY,
|
||||
METAFN_RANK,
|
||||
METAFN_EXTENT,
|
||||
METAFN_IS_SAME_TYPE,
|
||||
METAFN_IS_BASE_OF_TYPE,
|
||||
METAFN_IS_VIRTUAL_BASE_OF_TYPE,
|
||||
METAFN_IS_CONVERTIBLE_TYPE,
|
||||
METAFN_IS_NOTHROW_CONVERTIBLE_TYPE,
|
||||
METAFN_IS_LAYOUT_COMPATIBLE_TYPE,
|
||||
METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE,
|
||||
METAFN_IS_INVOCABLE_TYPE,
|
||||
METAFN_IS_INVOCABLE_R_TYPE,
|
||||
METAFN_IS_NOTHROW_INVOCABLE_TYPE,
|
||||
METAFN_IS_NOTHROW_INVOCABLE_R_TYPE,
|
||||
METAFN_REMOVE_CONST,
|
||||
METAFN_REMOVE_VOLATILE,
|
||||
METAFN_REMOVE_CV,
|
||||
METAFN_ADD_CONST,
|
||||
METAFN_ADD_VOLATILE,
|
||||
METAFN_ADD_CV,
|
||||
METAFN_REMOVE_REFERENCE,
|
||||
METAFN_ADD_LVALUE_REFERENCE,
|
||||
METAFN_ADD_RVALUE_REFERENCE,
|
||||
METAFN_MAKE_SIGNED,
|
||||
METAFN_MAKE_UNSIGNED,
|
||||
METAFN_REMOVE_EXTENT,
|
||||
METAFN_REMOVE_ALL_EXTENTS,
|
||||
METAFN_REMOVE_POINTER,
|
||||
METAFN_ADD_POINTER,
|
||||
METAFN_REMOVE_CVREF,
|
||||
METAFN_DECAY,
|
||||
METAFN_COMMON_TYPE,
|
||||
METAFN_COMMON_REFERENCE,
|
||||
METAFN_UNDERLYING_TYPE,
|
||||
METAFN_INVOKE_RESULT,
|
||||
METAFN_UNWRAP_REFERENCE,
|
||||
METAFN_UNWRAP_REF_DECAY,
|
||||
METAFN_TUPLE_SIZE,
|
||||
METAFN_TUPLE_ELEMENT,
|
||||
METAFN_VARIANT_SIZE,
|
||||
METAFN_VARIANT_ALTERNATIVE,
|
||||
METAFN_TYPE_ORDER,
|
||||
METAFN_ANNOTATIONS_OF,
|
||||
METAFN_ANNOTATIONS_OF_WITH_TYPE,
|
||||
/* Special metafunctions. */
|
||||
METAFN_ACCESS_CONTEXT_CURRENT
|
||||
};
|
||||
|
||||
/* Possible return types of metafunctions. */
|
||||
enum metafn_kind_ret {
|
||||
METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_RET_SIZE_T,
|
||||
METAFN_KIND_RET_MEMBER_OFFSET,
|
||||
METAFN_KIND_RET_OPERATORS,
|
||||
METAFN_KIND_RET_SOURCE_LOCATION,
|
||||
METAFN_KIND_RET_STRING_VIEW,
|
||||
METAFN_KIND_RET_U8STRING_VIEW,
|
||||
METAFN_KIND_RET_STRONG_ORDERING,
|
||||
METAFN_KIND_RET_VECTOR_INFO,
|
||||
METAFN_KIND_RET_ACCESS_CONTEXT,
|
||||
METAFN_KIND_RET_TEMPLATE_PARM,
|
||||
};
|
||||
|
||||
/* Possible argument types of metafunctions. */
|
||||
enum metafn_kind_arg {
|
||||
METAFN_KIND_ARG_VOID = 0,
|
||||
METAFN_KIND_ARG_INFO,
|
||||
METAFN_KIND_ARG_TINFO, /* info argument which throws if not a type. */
|
||||
METAFN_KIND_ARG_REFLECTION_RANGE,
|
||||
/* reflection_range with type infos only. */
|
||||
METAFN_KIND_ARG_REFLECTION_RANGET,
|
||||
METAFN_KIND_ARG_INPUT_RANGE,
|
||||
METAFN_KIND_ARG_SIZE_T,
|
||||
METAFN_KIND_ARG_UNSIGNED,
|
||||
METAFN_KIND_ARG_OPERATORS,
|
||||
METAFN_KIND_ARG_ACCESS_CONTEXT,
|
||||
METAFN_KIND_ARG_DATA_MEMBER_OPTIONS,
|
||||
METAFN_KIND_ARG_TEMPLATE_PARM, /* Some other template parameter. */
|
||||
METAFN_KIND_ARG_TEMPLATE_PARM_REF /* Reference to template parameter. */
|
||||
};
|
||||
|
||||
/* Possible sets of 0-3 arguments of metafunctions. */
|
||||
enum metafn_kind_args {
|
||||
METAFN_KIND_ARGS_VOID = METAFN_KIND_ARG_VOID,
|
||||
METAFN_KIND_ARGS_INFO = METAFN_KIND_ARG_INFO,
|
||||
METAFN_KIND_ARGS_TINFO = METAFN_KIND_ARG_TINFO,
|
||||
METAFN_KIND_ARGS_REFLECTION_RANGET = METAFN_KIND_ARG_REFLECTION_RANGET,
|
||||
METAFN_KIND_ARGS_INPUT_RANGE = METAFN_KIND_ARG_INPUT_RANGE,
|
||||
METAFN_KIND_ARGS_OPERATORS = METAFN_KIND_ARG_OPERATORS,
|
||||
METAFN_KIND_ARGS_TEMPLATE_PARM = METAFN_KIND_ARG_TEMPLATE_PARM,
|
||||
METAFN_KIND_ARGS_TEMPLATE_PARM_REF = METAFN_KIND_ARG_TEMPLATE_PARM_REF,
|
||||
METAFN_KIND_ARGS_INFO_INFO
|
||||
= (METAFN_KIND_ARG_INFO << 5) | METAFN_KIND_ARG_INFO,
|
||||
METAFN_KIND_ARGS_TINFO_TINFO
|
||||
= (METAFN_KIND_ARG_TINFO << 5) | METAFN_KIND_ARG_TINFO,
|
||||
METAFN_KIND_ARGS_TINFO_UNSIGNED
|
||||
= (METAFN_KIND_ARG_UNSIGNED << 5) | METAFN_KIND_ARG_TINFO,
|
||||
METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT
|
||||
= (METAFN_KIND_ARG_ACCESS_CONTEXT << 5) | METAFN_KIND_ARG_INFO,
|
||||
METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS
|
||||
= (METAFN_KIND_ARG_DATA_MEMBER_OPTIONS << 5) | METAFN_KIND_ARG_TINFO,
|
||||
METAFN_KIND_ARGS_INFO_REFLECTION_RANGE
|
||||
= (METAFN_KIND_ARG_REFLECTION_RANGE << 5) | METAFN_KIND_ARG_INFO,
|
||||
METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET
|
||||
= (METAFN_KIND_ARG_REFLECTION_RANGET << 5) | METAFN_KIND_ARG_TINFO,
|
||||
METAFN_KIND_ARGS_SIZE_T_TINFO
|
||||
= (METAFN_KIND_ARG_TINFO << 5) | METAFN_KIND_ARG_SIZE_T,
|
||||
METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET
|
||||
= (METAFN_KIND_ARG_REFLECTION_RANGET << 10) | METAFN_KIND_ARGS_TINFO_TINFO,
|
||||
};
|
||||
|
||||
enum metafn_kind {
|
||||
METAFN_KIND_BOOL_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_BOOL_TINFO
|
||||
= (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT
|
||||
= (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << 5) | METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_BOOL_TINFO_TINFO
|
||||
= (METAFN_KIND_ARGS_TINFO_TINFO << 5) | METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET
|
||||
= (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << 5) | METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET
|
||||
= (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << 5)
|
||||
| METAFN_KIND_RET_BOOL,
|
||||
METAFN_KIND_INFO_INFO = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_TINFO
|
||||
= (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_TINFO_REFLECTION_RANGET
|
||||
= (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS
|
||||
= (METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_REFLECTION_RANGET
|
||||
= (METAFN_KIND_ARGS_REFLECTION_RANGET << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_INFO_REFLECTION_RANGE
|
||||
= (METAFN_KIND_ARGS_INFO_REFLECTION_RANGE << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_INPUT_RANGE
|
||||
= (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_TEMPLATE_PARM
|
||||
= (METAFN_KIND_ARGS_TEMPLATE_PARM << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_TEMPLATE_PARM_REF
|
||||
= (METAFN_KIND_ARGS_TEMPLATE_PARM_REF << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_INFO_SIZE_T_TINFO
|
||||
= (METAFN_KIND_ARGS_SIZE_T_TINFO << 5) | METAFN_KIND_RET_INFO,
|
||||
METAFN_KIND_MEMBER_OFFSET_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_MEMBER_OFFSET,
|
||||
METAFN_KIND_OPERATORS_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_OPERATORS,
|
||||
METAFN_KIND_SIZE_T_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_SIZE_T,
|
||||
METAFN_KIND_SIZE_T_TINFO
|
||||
= (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_SIZE_T,
|
||||
METAFN_KIND_SIZE_T_TINFO_UNSIGNED
|
||||
= (METAFN_KIND_ARGS_TINFO_UNSIGNED << 5) | METAFN_KIND_RET_SIZE_T,
|
||||
METAFN_KIND_SOURCE_LOCATION_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_SOURCE_LOCATION,
|
||||
METAFN_KIND_STRING_VIEW_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_STRING_VIEW,
|
||||
METAFN_KIND_STRING_VIEW_OPERATORS
|
||||
= (METAFN_KIND_ARGS_OPERATORS << 5) | METAFN_KIND_RET_STRING_VIEW,
|
||||
METAFN_KIND_U8STRING_VIEW_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_U8STRING_VIEW,
|
||||
METAFN_KIND_U8STRING_VIEW_OPERATORS
|
||||
= (METAFN_KIND_ARGS_OPERATORS << 5) | METAFN_KIND_RET_U8STRING_VIEW,
|
||||
METAFN_KIND_STRONG_ORDERING_TINFO_TINFO
|
||||
= (METAFN_KIND_ARGS_TINFO_TINFO << 5) | METAFN_KIND_RET_STRONG_ORDERING,
|
||||
METAFN_KIND_VECTOR_INFO_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_VECTOR_INFO,
|
||||
METAFN_KIND_VECTOR_INFO_INFO_INFO
|
||||
= (METAFN_KIND_ARGS_INFO_INFO << 5) | METAFN_KIND_RET_VECTOR_INFO,
|
||||
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT
|
||||
= (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << 5)
|
||||
| METAFN_KIND_RET_VECTOR_INFO,
|
||||
METAFN_KIND_TEMPLATE_PARM_INFO
|
||||
= (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_TEMPLATE_PARM,
|
||||
METAFN_KIND_ACCESS_CONTEXT_VOID
|
||||
= (METAFN_KIND_ARGS_VOID << 5) | METAFN_KIND_RET_ACCESS_CONTEXT
|
||||
};
|
||||
%}
|
||||
struct metafn_info
|
||||
{
|
||||
/* A name within "std::meta::" (or "std::meta::access_context::"). */
|
||||
const char *name;
|
||||
|
||||
/* METAFN_ code. */
|
||||
metafn_code code;
|
||||
|
||||
/* METAFN_KIND_ kind of arguments and return type. */
|
||||
metafn_kind kind;
|
||||
};
|
||||
%%
|
||||
operator_of, METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,
|
||||
symbol_of, METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,
|
||||
u8symbol_of, METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,
|
||||
has_identifier, METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,
|
||||
identifier_of, METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,
|
||||
u8identifier_of, METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,
|
||||
display_string_of, METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,
|
||||
u8display_string_of, METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,
|
||||
source_location_of, METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,
|
||||
type_of, METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,
|
||||
object_of, METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,
|
||||
constant_of, METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,
|
||||
is_public, METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,
|
||||
is_protected, METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,
|
||||
is_private, METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,
|
||||
is_virtual, METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,
|
||||
is_pure_virtual, METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,
|
||||
is_override, METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,
|
||||
is_final, METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,
|
||||
is_deleted, METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,
|
||||
is_defaulted, METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,
|
||||
is_user_provided, METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,
|
||||
is_user_declared, METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,
|
||||
is_explicit, METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,
|
||||
is_noexcept, METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,
|
||||
is_bit_field, METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,
|
||||
is_enumerator, METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,
|
||||
is_annotation, METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,
|
||||
is_const, METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,
|
||||
is_volatile, METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,
|
||||
is_mutable_member, METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,
|
||||
is_lvalue_reference_qualified, METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,
|
||||
is_rvalue_reference_qualified, METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,
|
||||
has_static_storage_duration, METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,
|
||||
has_thread_storage_duration, METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,
|
||||
has_automatic_storage_duration, METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,
|
||||
has_internal_linkage, METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,
|
||||
has_module_linkage, METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,
|
||||
has_external_linkage, METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,
|
||||
has_c_language_linkage, METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,
|
||||
has_linkage, METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,
|
||||
is_complete_type, METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,
|
||||
is_enumerable_type, METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,
|
||||
is_variable, METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,
|
||||
is_type, METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,
|
||||
is_namespace, METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,
|
||||
is_type_alias, METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,
|
||||
is_namespace_alias, METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,
|
||||
is_function, METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,
|
||||
is_conversion_function, METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,
|
||||
is_operator_function, METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,
|
||||
is_literal_operator, METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,
|
||||
is_special_member_function, METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,
|
||||
is_constructor, METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,
|
||||
is_default_constructor, METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,
|
||||
is_copy_constructor, METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,
|
||||
is_move_constructor, METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,
|
||||
is_assignment, METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,
|
||||
is_copy_assignment, METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,
|
||||
is_move_assignment, METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,
|
||||
is_destructor, METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,
|
||||
is_function_parameter, METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,
|
||||
is_explicit_object_parameter, METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,
|
||||
has_default_argument, METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,
|
||||
has_ellipsis_parameter, METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,
|
||||
is_template, METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_function_template, METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_variable_template, METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_class_template, METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_alias_template, METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_conversion_function_template, METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_operator_function_template, METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_literal_operator_template, METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_constructor_template, METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,
|
||||
is_concept, METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,
|
||||
is_value, METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,
|
||||
is_object, METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,
|
||||
is_structured_binding, METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,
|
||||
is_class_member, METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,
|
||||
is_namespace_member, METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,
|
||||
is_nonstatic_data_member, METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,
|
||||
is_static_member, METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,
|
||||
is_base, METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,
|
||||
has_default_member_initializer, METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,
|
||||
has_parent, METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,
|
||||
parent_of, METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,
|
||||
dealias, METAFN_DEALIAS, METAFN_KIND_INFO_INFO,
|
||||
has_template_arguments, METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,
|
||||
template_of, METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,
|
||||
template_arguments_of, METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,
|
||||
parameters_of, METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,
|
||||
variable_of, METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,
|
||||
return_type_of, METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,
|
||||
is_accessible, METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
|
||||
has_inaccessible_nonstatic_data_members, METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
|
||||
has_inaccessible_bases, METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
|
||||
has_inaccessible_subobjects, METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
|
||||
members_of, METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
|
||||
bases_of, METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
|
||||
static_data_members_of, METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
|
||||
nonstatic_data_members_of, METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
|
||||
subobjects_of, METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
|
||||
enumerators_of, METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,
|
||||
offset_of, METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,
|
||||
size_of, METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,
|
||||
alignment_of, METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,
|
||||
bit_size_of, METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,
|
||||
extract, METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,
|
||||
can_substitute, METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,
|
||||
substitute, METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,
|
||||
reflect_constant, METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,
|
||||
reflect_object, METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,
|
||||
reflect_function, METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,
|
||||
reflect_constant_string, METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,
|
||||
reflect_constant_array, METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,
|
||||
data_member_spec, METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,
|
||||
is_data_member_spec, METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,
|
||||
define_aggregate, METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,
|
||||
is_void_type, METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_null_pointer_type, METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_integral_type, METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_floating_point_type, METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_array_type, METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_pointer_type, METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_lvalue_reference_type, METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_rvalue_reference_type, METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_member_object_pointer_type, METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_member_function_pointer_type, METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_enum_type, METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_union_type, METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_class_type, METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_function_type, METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_reflection_type, METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_reference_type, METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_arithmetic_type, METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_fundamental_type, METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_object_type, METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_scalar_type, METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_compound_type, METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_member_pointer_type, METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_const_type, METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_volatile_type, METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_copyable_type, METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_relocatable_type, METAFN_IS_TRIVIALLY_RELOCATABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_replaceable_type, METAFN_IS_REPLACEABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_standard_layout_type, METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_empty_type, METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_polymorphic_type, METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_abstract_type, METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_final_type, METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_aggregate_type, METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_consteval_only_type, METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_signed_type, METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_unsigned_type, METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_bounded_array_type, METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_unbounded_array_type, METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_scoped_enum_type, METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_constructible_type, METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,
|
||||
is_default_constructible_type, METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_copy_constructible_type, METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_move_constructible_type, METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_assignable_type, METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_copy_assignable_type, METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_move_assignable_type, METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_swappable_with_type, METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_swappable_type, METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_destructible_type, METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_constructible_type, METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,
|
||||
is_trivially_default_constructible_type, METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_copy_constructible_type, METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_move_constructible_type, METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_assignable_type, METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_trivially_copy_assignable_type, METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_move_assignable_type, METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_trivially_destructible_type, METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_constructible_type, METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,
|
||||
is_nothrow_default_constructible_type, METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_copy_constructible_type, METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_move_constructible_type, METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_assignable_type, METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_nothrow_copy_assignable_type, METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_move_assignable_type, METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_swappable_with_type, METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_nothrow_swappable_type, METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_destructible_type, METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_nothrow_relocatable_type, METAFN_IS_NOTHROW_RELOCATABLE_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
is_implicit_lifetime_type, METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,
|
||||
has_virtual_destructor, METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,
|
||||
has_unique_object_representations, METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,
|
||||
reference_constructs_from_temporary, METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
reference_converts_from_temporary, METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
rank, METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,
|
||||
extent, METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,
|
||||
is_same_type, METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_base_of_type, METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_virtual_base_of_type, METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_convertible_type, METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_nothrow_convertible_type, METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_layout_compatible_type, METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_pointer_interconvertible_base_of_type, METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,
|
||||
is_invocable_type, METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,
|
||||
is_invocable_r_type, METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,
|
||||
is_nothrow_invocable_type, METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,
|
||||
is_nothrow_invocable_r_type, METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,
|
||||
remove_const, METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,
|
||||
remove_volatile, METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,
|
||||
remove_cv, METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,
|
||||
add_const, METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,
|
||||
add_volatile, METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,
|
||||
add_cv, METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,
|
||||
remove_reference, METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,
|
||||
add_lvalue_reference, METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,
|
||||
add_rvalue_reference, METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,
|
||||
make_signed, METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,
|
||||
make_unsigned, METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,
|
||||
remove_extent, METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,
|
||||
remove_all_extents, METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,
|
||||
remove_pointer, METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,
|
||||
add_pointer, METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,
|
||||
remove_cvref, METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,
|
||||
decay, METAFN_DECAY, METAFN_KIND_INFO_TINFO,
|
||||
common_type, METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,
|
||||
common_reference, METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,
|
||||
underlying_type, METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,
|
||||
invoke_result, METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,
|
||||
unwrap_reference, METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,
|
||||
unwrap_ref_decay, METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,
|
||||
tuple_size, METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,
|
||||
tuple_element, METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,
|
||||
variant_size, METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,
|
||||
variant_alternative, METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,
|
||||
type_order, METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,
|
||||
annotations_of, METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,
|
||||
annotations_of_with_type, METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,
|
||||
current, METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,
|
||||
1092
gcc/cp/metafns.h
Normal file
1092
gcc/cp/metafns.h
Normal file
File diff suppressed because it is too large
Load Diff
2134
gcc/cp/reflect.cc
2134
gcc/cp/reflect.cc
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user