OpenVDB 13.0.0

Loading...
Searching...
No Matches
AliasTypeMap< T1, T2 > Struct Template Reference

Alias mapping between two types, a frontend type T1 and a backend type T2. This class is the intended interface for binding objects which implement supported backend AX/IR types to this given backend type. More specifically, it's current and expected usage is limited to objects which hold a single member of a supported backend type and implements a StandardLayoutType as defined by the standard. Fundamentally, T1->T2 mapping should be supported by reinterpret_cast<> as defined by the type aliasing rules. More...

`#include <openvdb_ax/codegen/Types.h>`

## Public Types
using | LLVMTypeT = LLVMType<T2>

## Static Public Member Functions
static llvm::Type * | get (llvm::LLVMContext &C)
static llvm::Constant * | get (llvm::LLVMContext &C, const T1 &value)
static llvm::Constant * | get (llvm::LLVMContext &C, const T1 *const value)

## Static Public Attributes
static const bool | CXXUTypeIsNativeType = LLVMTypeT::CXXUTypeIsNativeType

## Detailed Description

template<typename T1, typename T2>
struct openvdb::v13_0::ax::codegen::AliasTypeMap< T1, T2 >

Alias mapping between two types, a frontend type T1 and a backend type T2. This class is the intended interface for binding objects which implement supported backend AX/IR types to this given backend type. More specifically, it's current and expected usage is limited to objects which hold a single member of a supported backend type and implements a StandardLayoutType as defined by the standard. Fundamentally, T1->T2 mapping should be supported by reinterpret_cast<> as defined by the type aliasing rules.

Note
  The static asserts provide preliminary checks but are by no means a guarantee that a provided mapping is correct. Ensure the above requirements are met when instantiating an alias.

## Member Typedef Documentation

## ◆ LLVMTypeT

template<typename T1, typename T2>

using LLVMTypeT = LLVMType<T2>

## Member Function Documentation

## ◆ get() [1/3]

template<typename T1, typename T2>

llvm::Type * get | ( | llvm::LLVMContext & | C | ) |
| inline static

## ◆ get() [2/3]

template<typename T1, typename T2>

llvm::Constant * get | ( | llvm::LLVMContext & | C,
|  | const T1 & | value )
| inline static

## ◆ get() [3/3]

template<typename T1, typename T2>

llvm::Constant * get | ( | llvm::LLVMContext & | C,
|  | const T1 *const | value )
| inline static

## Member Data Documentation

## ◆ CXXUTypeIsNativeType

template<typename T1, typename T2>

const bool CXXUTypeIsNativeType = LLVMTypeT::CXXUTypeIsNativeType
| static