clingo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Public Types | Public Member Functions | List of all members
bk_lib::left_right_sequence< L, R, i > Class Template Reference

Stores two sequences in one contiguous memory block. More...

#include <left_right_sequence.h>

Inheritance diagram for bk_lib::left_right_sequence< L, R, i >:
Inheritance graph
Collaboration diagram for bk_lib::left_right_sequence< L, R, i >:
Collaboration graph

Public Types

typedef
bk_lib::detail::select_base< L,
R, i >::type 
base_type
 
typedef base_type::left_type left_type
 
typedef base_type::right_type right_type
 
typedef base_type::size_type size_type
 
typedef base_type::align_type align_type
 
typedef base_type::max_type max_type
 
typedef base_type::buf_type buf_type
 
typedef base_type::left_iterator left_iterator
 
typedef
base_type::const_left_iterator 
const_left_iterator
 
typedef base_type::right_iterator right_iterator
 
typedef
base_type::const_right_iterator 
const_right_iterator
 

Public Member Functions

 left_right_sequence ()
 
 left_right_sequence (const left_right_sequence &other)
 
 ~left_right_sequence ()
 
left_right_sequenceoperator= (const left_right_sequence &)
 
void try_shrink ()
 
void move (left_right_sequence &other)
 

Detailed Description

template<class L, class R, unsigned i>
class bk_lib::left_right_sequence< L, R, i >

Stores two sequences in one contiguous memory block.

The left sequence grows from left to right, while the right sequence grows from right to left. On overlap, the memory block is automatically extended.

Parameters
Lvalue type of left sequence
Rvalue type of right sequence
imax size on stack
Precondition
L and R can be copied with memcpy (i.e. have trivial copy constructor and trivial destructor)

Member Typedef Documentation

template<class L, class R, unsigned i>
typedef base_type::align_type bk_lib::left_right_sequence< L, R, i >::align_type
template<class L, class R, unsigned i>
typedef bk_lib::detail::select_base<L, R, i>::type bk_lib::left_right_sequence< L, R, i >::base_type
template<class L, class R, unsigned i>
typedef base_type::buf_type bk_lib::left_right_sequence< L, R, i >::buf_type
template<class L, class R, unsigned i>
typedef base_type::const_left_iterator bk_lib::left_right_sequence< L, R, i >::const_left_iterator
template<class L, class R, unsigned i>
typedef base_type::const_right_iterator bk_lib::left_right_sequence< L, R, i >::const_right_iterator
template<class L, class R, unsigned i>
typedef base_type::left_iterator bk_lib::left_right_sequence< L, R, i >::left_iterator
template<class L, class R, unsigned i>
typedef base_type::left_type bk_lib::left_right_sequence< L, R, i >::left_type
template<class L, class R, unsigned i>
typedef base_type::max_type bk_lib::left_right_sequence< L, R, i >::max_type
template<class L, class R, unsigned i>
typedef base_type::right_iterator bk_lib::left_right_sequence< L, R, i >::right_iterator
template<class L, class R, unsigned i>
typedef base_type::right_type bk_lib::left_right_sequence< L, R, i >::right_type
template<class L, class R, unsigned i>
typedef base_type::size_type bk_lib::left_right_sequence< L, R, i >::size_type

Constructor & Destructor Documentation

template<class L, class R, unsigned i>
bk_lib::left_right_sequence< L, R, i >::left_right_sequence ( )
inline
template<class L , class R , unsigned i>
bk_lib::left_right_sequence< L, R, i >::left_right_sequence ( const left_right_sequence< L, R, i > &  other)
template<class L, class R, unsigned i>
bk_lib::left_right_sequence< L, R, i >::~left_right_sequence ( )
inline

Member Function Documentation

template<class L, class R, unsigned i>
void bk_lib::left_right_sequence< L, R, i >::move ( left_right_sequence< L, R, i > &  other)
inline
template<class L , class R , unsigned i>
left_right_sequence< L, R, i > & bk_lib::left_right_sequence< L, R, i >::operator= ( const left_right_sequence< L, R, i > &  other)

Here is the call graph for this function:

template<class L, class R, unsigned i>
void bk_lib::left_right_sequence< L, R, i >::try_shrink ( )
inline

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