10#include <kernel/lafem/forward.hpp> 
   12#include <kernel/util/type_traits.hpp> 
   13#include <kernel/lafem/container.hpp> 
   14#include <kernel/adjacency/graph.hpp> 
   40    template < 
typename DT_, 
typename IT_ = Index>
 
   52      template <
typename DT2_ = DT_, 
typename IT2_ = IT_>
 
   56      template <
typename DataType2_, 
typename IndexType2_>
 
   90        this->
_indices.push_back(MemoryPool::template allocate_memory<IT_>(
rows() + 1));
 
  107        Index num_rows = graph.get_num_nodes_domain();
 
  108        Index num_cols = graph.get_num_nodes_image();
 
  118        IT_ * prow_ptr(vrow_ptr.
elements());
 
  119        IT_ * pcol_idx(vcol_idx.
elements());
 
  122        prow_ptr[0] = IT_(dom_ptr[0]);
 
  123        for(
Index i(0); i < num_rows; ++i)
 
  124          prow_ptr[i+1] = IT_(dom_ptr[i+1]);
 
  127        for(
Index i(0); i < num_nnze; ++i)
 
  128          pcol_idx[i] = IT_(img_idx[i]);
 
  149        Container<DT_, IT_>(rows_in * columns_in)
 
  151        XASSERT(val_in.
size() % entries_per_nonzero_in == 0);
 
  179      template <
typename DT2_ = DT_, 
typename IT2_ = IT_>
 
  183        deserialize<DT2_, IT2_>(input);
 
  207        this->
move(std::forward<MatrixMirrorBuffer>(other));
 
  222        t.
clone(*
this, clone_mode);
 
  234      template<
typename DT2_, 
typename IT2_>
 
  247      template <
typename DT2_, 
typename IT2_>
 
  260      template <
typename DT2_ = DT_, 
typename IT2_ = IT_>
 
  273      template <
typename DT2_ = DT_, 
typename IT2_ = IT_>
 
  284      template <Perspective = Perspective::native>
 
  295      template <Perspective = Perspective::native>
 
  306      template <Perspective = Perspective::native>
 
  317      template <Perspective = Perspective::native>
 
  330      template <Perspective = Perspective::native>
 
  370      DT_ 
const * 
val()
 const 
#define XASSERT(expr)
Assertion macro definition.
Adjacency Graph implementation.
Index * get_domain_ptr()
Returns the domain pointer array.
Index * get_image_idx()
Returns the image node index array.
Index get_num_indices() const
Returns the total number indices.
std::vector< DT_ * > _elements
List of pointers to all datatype dependent arrays.
std::vector< Index > _elements_size
List of corresponding datatype array sizes.
Index size() const
Returns the containers size.
void assign(const Container< DT2_, IT2_ > &other)
Assignment operation.
std::vector< IT_ * > _indices
List of pointers to all IT_ dependent arrays.
void clone(const Container &other, CloneMode clone_mode=CloneMode::Weak)
Clone operation.
void move(Container &&other)
Assignment move operation.
std::vector< Index > _indices_size
List of corresponding IT_ array sizes.
std::vector< Index > _scalar_index
List of scalars with datatype index.
Dense data vector class template.
DT_ * elements()
Get a pointer to the data array.
Matrix Mirror Buffer class template.
IT_ IndexType
Our indextype.
void convert(const MatrixMirrorBuffer< DT2_, IT2_ > &other)
Conversion method.
MatrixMirrorBuffer clone(CloneMode clone_mode=CloneMode::Weak) const
Clone operation.
MatrixMirrorBuffer(MatrixMirrorBuffer &&other)
Move Constructor.
MatrixMirrorBuffer(std::vector< char > input)
Constructor.
Index val_size() const
Retrieve total length of value array.
DT_ * val()
Retrieve non zero element array.
DT_ DataType
Our datatype.
Index columns() const
Retrieve matrix column count.
IT_ * row_ptr()
Retrieve row start index array.
IT_ * col_ind()
Retrieve column indices array.
MatrixMirrorBuffer(Index rows_in, Index columns_in, Index used_elements_in, Index entries_per_nonzero_in)
Basic Constructor.
MatrixMirrorBuffer & operator=(MatrixMirrorBuffer &&other)
Assignment move operator.
Index entries_per_nonzero() const
Retrieve entries per non zero element count.
std::vector< char > serialize() const
Serialization of complete container entity.
Index used_elements() const
Retrieve non zero element count.
MatrixMirrorBuffer(const Adjacency::Graph &graph, Index entries_per_nonzero_in)
Constructor.
MatrixMirrorBuffer(const Index rows_in, const Index columns_in, Index entries_per_nonzero_in, DenseVector< IT_, IT_ > &col_ind_in, DenseVector< DT_, IT_ > &val_in, DenseVector< IT_, IT_ > &row_ptr_in)
Constructor.
DT_ ValueType
Our value type.
void clone(const MatrixMirrorBuffer< DT2_, IT2_ > &other, CloneMode clone_mode=CloneMode::Weak)
Clone operation.
Index rows() const
Retrieve matrix row count.
void deserialize(std::vector< char > input)
Deserialization of complete container entity.
MatrixMirrorBuffer()
Constructor.
static void increase_memory(void *address)
increase memory counter
std::uint64_t Index
Index data type.