OpenVDB: AliasTypeMap< T1, T2 > Struct Template Reference

OpenVDB 9.1.0

Public Types | Static Public Member Functions | List of all members
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)

## Detailed Description

template<typename T1, typename T2>
struct openvdb::v9_1::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

using LLVMTypeT = LLVMType<T2>

## Member Function Documentation

## ◆ get() [1/3]

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

## ◆ get() [2/3]

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

## ◆ get() [3/3]

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