Lattice Land Core Library
Loading...
Searching...
No Matches
lala::AbstractDeps< Allocators > Class Template Reference

#include <abstract_deps.hpp>

Public Types

using allocators_type = battery::tuple<Allocators...>
 
using allocator_type = typename battery::tuple_element<0, battery::tuple<Allocators...>>::type
 

Public Member Functions

CUDA AbstractDeps (bool shared_copy, const Allocators &... allocators)
 
CUDA AbstractDeps (const Allocators &... allocators)
 
CUDA size_t size () const
 
CUDA bool is_shared_copy () const
 
template<class A >
CUDA abstract_ptr< A > extract (AType aty)
 
template<class A2 , class A >
CUDA NI abstract_ptr< A2 > clone (const abstract_ptr< A > &a)
 
template<class Alloc >
CUDA Alloc get_allocator () const
 

Static Public Attributes

static constexpr size_t n = battery::tuple_size<battery::tuple<Allocators...>>{}
 

Detailed Description

template<class... Allocators>
class lala::AbstractDeps< Allocators >

Abstract domains are organized in a directed-acyclic graph (DAG). Therefore, it is not straighforward to copy the whole hierarchy, because the child of a node may be shared by another node, and might have already been copied. This class is useful to copy hierarchy of abstract domains. Moreover, the allocators between the original and the copied hierarchy can be different.

The first allocator of the list is used for the internal allocations of this class.

Member Typedef Documentation

◆ allocators_type

template<class... Allocators>
using lala::AbstractDeps< Allocators >::allocators_type = battery::tuple<Allocators...>

◆ allocator_type

template<class... Allocators>
using lala::AbstractDeps< Allocators >::allocator_type = typename battery::tuple_element<0, battery::tuple<Allocators...>>::type

Constructor & Destructor Documentation

◆ AbstractDeps() [1/2]

template<class... Allocators>
CUDA lala::AbstractDeps< Allocators >::AbstractDeps ( bool shared_copy,
const Allocators &... allocators )
inline

◆ AbstractDeps() [2/2]

template<class... Allocators>
CUDA lala::AbstractDeps< Allocators >::AbstractDeps ( const Allocators &... allocators)
inline

Member Function Documentation

◆ size()

template<class... Allocators>
CUDA size_t lala::AbstractDeps< Allocators >::size ( ) const
inline

◆ is_shared_copy()

template<class... Allocators>
CUDA bool lala::AbstractDeps< Allocators >::is_shared_copy ( ) const
inline

◆ extract()

template<class... Allocators>
template<class A >
CUDA abstract_ptr< A > lala::AbstractDeps< Allocators >::extract ( AType aty)
inline

◆ clone()

template<class... Allocators>
template<class A2 , class A >
CUDA NI abstract_ptr< A2 > lala::AbstractDeps< Allocators >::clone ( const abstract_ptr< A > & a)
inline

◆ get_allocator()

template<class... Allocators>
template<class Alloc >
CUDA Alloc lala::AbstractDeps< Allocators >::get_allocator ( ) const
inline

Member Data Documentation

◆ n

template<class... Allocators>
constexpr size_t lala::AbstractDeps< Allocators >::n = battery::tuple_size<battery::tuple<Allocators...>>{}
staticconstexpr

The documentation for this class was generated from the following file: