EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
Classes | Functions | Variables
EBGeometry::Fused::Detail Namespace Reference

Implementation details of the fused operations. More...

Classes

struct  Base
 A value node's base: no pool, and an unset location for the code that asks for one. More...
 
struct  Base< true >
 A pool-resident node's base: a PoolHandle, holding the location its operands resolve against. More...
 
struct  Operands
 The operands of a node, with the location their pool-resident ones resolve against. More...
 
struct  Pack
 The operands of a fused node, as stored: a recursive aggregate, so that it stays trivially copyable and needs no std:: accessors in device code. More...
 
struct  Pack< S, Rest... >
 A pack: its first operand and the rest. More...
 
struct  Pack<>
 The empty pack. More...
 
struct  TracedExactly
 Whether a fused operation is traced exactly from its operands' spans: union, intersection (and so difference), complement and affine maps. More...
 
struct  TracedExactly< AffineOp< T > >
 Affine maps are traced exactly. More...
 
struct  TracedExactly< CombineOp< IsUnion > >
 Union and intersection are traced exactly. More...
 
struct  TracedExactly< ComplementOp >
 Complement is traced exactly. More...
 
struct  TypeAt
 Type I of a list of types. More...
 
struct  TypeAt< 0, C, Rest... >
 Type 0: the first. More...
 
struct  TypeAt< I, C, Rest... >
 Type I > 0: type I - 1 of the rest. More...
 

Functions

template<size_t I, class S , class... Rest>
const auto & get (const Pack< S, Rest... > &a_pack) noexcept
 Operand I of a pack.
 
template<size_t I, class S , class... Rest>
auto & get (Pack< S, Rest... > &a_pack) noexcept
 Operand I of a pack, for writing.
 
template<class... Cs>
constexpr DistanceQuality worstAndBound () noexcept
 The worst distance quality among some operand types, and Bound (Exact < Bound < NotADistance).
 

Variables

template<class... Cs>
constexpr bool anyPoolHandle = (isPoolHandle<Cs> || ...)
 Whether any of the operand types lives in a pool.
 

Detailed Description

Implementation details of the fused operations.

Internal helpers; not part of the public API.

Function Documentation

◆ get() [1/2]

template<size_t I, class S , class... Rest>
const auto & EBGeometry::Fused::Detail::get ( const Pack< S, Rest... > &  a_pack)
inlinenoexcept

Operand I of a pack.

Template Parameters
IIndex.
SFirst stored operand type.
RestThe others.
Parameters
[in]a_packPack.
Returns
The operand.

◆ get() [2/2]

template<size_t I, class S , class... Rest>
auto & EBGeometry::Fused::Detail::get ( Pack< S, Rest... > &  a_pack)
inlinenoexcept

Operand I of a pack, for writing.

Template Parameters
IIndex.
SFirst stored operand type.
RestThe others.
Parameters
[in,out]a_packPack.
Returns
The operand.

◆ worstAndBound()

template<class... Cs>
constexpr DistanceQuality EBGeometry::Fused::Detail::worstAndBound ( )
constexprnoexcept

The worst distance quality among some operand types, and Bound (Exact < Bound < NotADistance).

Template Parameters
CsOperand types.
Returns
The quality.

Variable Documentation

◆ anyPoolHandle

template<class... Cs>
constexpr bool EBGeometry::Fused::Detail::anyPoolHandle = (isPoolHandle<Cs> || ...)
inlineconstexpr

Whether any of the operand types lives in a pool.

Template Parameters
CsOperand types.