Halide 19.0.0
Halide compiler and libraries
|
A structure to represent the fully scoped name of a C++ composite type for use in generating function signatures that use that type. More...
#include <Type.h>
Public Types | |
enum | Modifier : uint8_t { Const = 1 << 0 , Volatile = 1 << 1 , Restrict = 1 << 2 , Pointer = 1 << 3 , FunctionTypedef = 1 << 4 } |
One set of modifiers on a type. More... | |
enum | ReferenceType : uint8_t { NotReference = 0 , LValueReference = 1 , RValueReference = 2 } |
References are separate because they only occur at the outermost level. More... | |
Public Member Functions | |
halide_handle_cplusplus_type (const halide_cplusplus_type_name &inner_name, const std::vector< std::string > &namespaces={}, const std::vector< halide_cplusplus_type_name > &enclosing_types={}, const std::vector< uint8_t > &modifiers={}, ReferenceType reference_type=NotReference) | |
Static Public Member Functions | |
template<typename T > | |
static halide_handle_cplusplus_type | make () |
Public Attributes | |
halide_cplusplus_type_name | inner_name |
std::vector< std::string > | namespaces |
std::vector< halide_cplusplus_type_name > | enclosing_types |
std::vector< uint8_t > | cpp_type_modifiers |
Qualifiers and indirections on type. 0 is innermost. | |
ReferenceType | reference_type |
A structure to represent the fully scoped name of a C++ composite type for use in generating function signatures that use that type.
This is intended to be a constexpr usable type.
Although this is in the global namespace, it should be considered "Halide Internal" and subject to change; code outside Halide should avoid referencing it.
One set of modifiers on a type.
The const/volatile/restrict properties are "inside" the pointer property.
References are separate because they only occur at the outermost level.
No modifiers are needed for references as they are not allowed to apply to the reference itself. (This isn't true for restrict, but that is a C++ extension anyway.) If modifiers are needed, the last entry in the above array would be the modifers for the reference.
Enumerator | |
---|---|
NotReference | |
LValueReference | |
RValueReference |
|
inline |
|
static |
Definition at line 200 of file Type.h.
References Const, Halide::Internal::extract_namespaces(), FunctionTypedef, inner_name, LValueReference, halide_c_type_to_name< T >::name(), halide_cplusplus_type_name::name, namespaces, NotReference, Pointer, RValueReference, and Volatile.
Referenced by halide_handle_traits< T >::type_info().
halide_cplusplus_type_name halide_handle_cplusplus_type::inner_name |
std::vector<std::string> halide_handle_cplusplus_type::namespaces |
std::vector<halide_cplusplus_type_name> halide_handle_cplusplus_type::enclosing_types |
std::vector<uint8_t> halide_handle_cplusplus_type::cpp_type_modifiers |
ReferenceType halide_handle_cplusplus_type::reference_type |