#include <split_strategy.hpp>
|
CUDA | SplitStrategy (AType atype, abstract_ptr< A > a, const allocator_type &alloc=allocator_type()) |
|
template<class A2 , class Alloc2 , class... Allocators> |
CUDA | SplitStrategy (const SplitStrategy< A2, Alloc2 > &other, AbstractDeps< Allocators... > &deps) |
|
CUDA AType | aty () const |
|
CUDA allocator_type | get_allocator () const |
|
template<class Alloc2 = allocator_type> |
CUDA snapshot_type< Alloc2 > | snapshot (const Alloc2 &alloc=Alloc2()) const |
|
template<class Alloc2 = allocator_type> |
CUDA void | restore (const snapshot_type< Alloc2 > &snap) |
|
CUDA void | reset () |
|
template<bool diagnose = false, class F , class Env , class Alloc2 > |
CUDA NI bool | interpret_tell (const F &f, Env &env, tell_type< Alloc2 > &tell, IDiagnostics &diagnostics) const |
|
template<IKind kind, bool diagnose = false, class F , class Env , class I > |
CUDA bool | interpret (const F &f, Env &env, I &intermediate, IDiagnostics &diagnostics) const |
|
template<class Alloc2 > |
CUDA local::B | deduce (const tell_type< Alloc2 > &t) |
|
CUDA NI branch_type | split () |
|
CUDA size_t | num_strategies () const |
|
◆ allocator_type
template<class A , class Allocator = typename A::allocator_type>
◆ sub_type
template<class A , class Allocator = typename A::allocator_type>
◆ sub_allocator_type
template<class A , class Allocator = typename A::allocator_type>
using lala::SplitStrategy< A, Allocator >::sub_allocator_type = typename sub_type::allocator_type |
◆ sub_tell_type
template<class A , class Allocator = typename A::allocator_type>
◆ branch_type
template<class A , class Allocator = typename A::allocator_type>
◆ this_type
template<class A , class Allocator = typename A::allocator_type>
◆ tell_type
template<class A , class Allocator = typename A::allocator_type>
template<class Alloc2 >
◆ SplitStrategy() [1/2]
template<class A , class Allocator = typename A::allocator_type>
◆ SplitStrategy() [2/2]
template<class A , class Allocator = typename A::allocator_type>
template<class A2 , class Alloc2 , class... Allocators>
◆ aty()
template<class A , class Allocator = typename A::allocator_type>
◆ get_allocator()
template<class A , class Allocator = typename A::allocator_type>
◆ snapshot()
template<class A , class Allocator = typename A::allocator_type>
template<class Alloc2 = allocator_type>
◆ restore()
template<class A , class Allocator = typename A::allocator_type>
template<class Alloc2 = allocator_type>
◆ reset()
template<class A , class Allocator = typename A::allocator_type>
Restart the search from the first variable.
◆ interpret_tell()
template<class A , class Allocator = typename A::allocator_type>
template<bool diagnose = false, class F , class Env , class Alloc2 >
CUDA NI bool lala::SplitStrategy< A, Allocator >::interpret_tell |
( |
const F & | f, |
|
|
Env & | env, |
|
|
tell_type< Alloc2 > & | tell, |
|
|
IDiagnostics & | diagnostics ) const |
|
inline |
This interpretation function expects f
to be a predicate of the form search(VariableOrder, ValueOrder, x_1, x_2, ..., x_n)
.
◆ interpret()
template<class A , class Allocator = typename A::allocator_type>
template<IKind kind, bool diagnose = false, class F , class Env , class I >
CUDA bool lala::SplitStrategy< A, Allocator >::interpret |
( |
const F & | f, |
|
|
Env & | env, |
|
|
I & | intermediate, |
|
|
IDiagnostics & | diagnostics ) const |
|
inline |
◆ deduce()
template<class A , class Allocator = typename A::allocator_type>
template<class Alloc2 >
This deduce method adds new strategies, and therefore do not satisfy the PCCP model. Calling this function multiple times will create multiple strategies, that will be called in sequence along a branch of the search tree. @sequential
◆ split()
template<class A , class Allocator = typename A::allocator_type>
Split the next unassigned variable according to the current strategy. If all variables of the current strategy are assigned, use the next strategy. If no strategy remains, returns an empty set of branches.
If the next unassigned variable cannot be split, for instance because the value ordering strategy maps to bot
or top
, an empty set of branches is returned. This also means that you cannot suppose split(a) = {}
to mean a
is at bot
.
◆ num_strategies()
template<class A , class Allocator = typename A::allocator_type>
◆ SplitStrategy
template<class A , class Allocator = typename A::allocator_type>
template<class A2 , class Alloc2 >
◆ is_abstract_universe
template<class A , class Allocator = typename A::allocator_type>
◆ sequential
template<class A , class Allocator = typename A::allocator_type>
◆ is_totally_ordered
template<class A , class Allocator = typename A::allocator_type>
◆ preserve_bot
template<class A , class Allocator = typename A::allocator_type>
◆ preserve_top
template<class A , class Allocator = typename A::allocator_type>
◆ preserve_join
template<class A , class Allocator = typename A::allocator_type>
◆ preserve_meet
template<class A , class Allocator = typename A::allocator_type>
◆ injective_concretization
template<class A , class Allocator = typename A::allocator_type>
const bool lala::SplitStrategy< A, Allocator >::injective_concretization = sub_type::injective_concretization |
|
staticconstexpr |
◆ preserve_concrete_covers
template<class A , class Allocator = typename A::allocator_type>
const bool lala::SplitStrategy< A, Allocator >::preserve_concrete_covers = sub_type::preserve_concrete_covers |
|
staticconstexpr |
◆ name
template<class A , class Allocator = typename A::allocator_type>
The documentation for this class was generated from the following file: