7#ifndef REAL_TIME_TRANSPORT_BLOCK_MATRICES_BLOCK_VECTOR_H
8#define REAL_TIME_TRANSPORT_BLOCK_MATRICES_BLOCK_VECTOR_H
12#include "../extern/boost_unordered.hpp"
14#include <SciCore/Definitions.h>
17#include "../RealTimeTransport_export.h"
19namespace RealTimeTransport
26 using Scalar = SciCore::Complex;
27 using MatrixType = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>;
28 using UnorderedElementMap = boost::unordered_flat_map<
int, MatrixType>;
30 BlockVector()
noexcept;
31 BlockVector(UnorderedElementMap&& elements)
noexcept;
33 BlockVector& operator+=(
const BlockVector& other);
35 void reserve(size_t s);
36 void emplace(
int index, MatrixType&& A);
38 UnorderedElementMap::iterator begin()
noexcept;
39 UnorderedElementMap::iterator end()
noexcept;
41 UnorderedElementMap::const_iterator begin()
const noexcept;
42 UnorderedElementMap::const_iterator end()
const noexcept;
44 int size()
const noexcept;
45 bool contains(
int i)
const;
47 UnorderedElementMap::iterator find(
int i);
48 UnorderedElementMap::const_iterator find(
int i)
const;
50 void eraseZeroes(SciCore::Real prec = Eigen::NumTraits<Scalar>::dummy_precision());
51 void addToBlock(
int i, MatrixType&& A);
54 UnorderedElementMap _elements;
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15