25#ifndef __BITPIT_ADAPTION_HPP__
26#define __BITPIT_ADAPTION_HPP__
29#include <unordered_map>
30#include <unordered_set>
65 : type(TYPE_UNKNOWN), entity(ENTITY_UNKNOWN), rank(-1)
69 Info(Type user_type, Entity user_entity,
int user_rank = -1)
70 : type(user_type), entity(user_entity), rank(user_rank)
77 std::vector<long> previous;
78 std::vector<long> current;
85 typedef std::vector<Info>::iterator iterator;
86 typedef std::vector<Info>::const_iterator const_iterator;
88 static void appendIds(std::vector<long> src,
bool unique, std::vector<long> *dst);
89 static std::size_t
removeIds(std::unordered_set<long> src, std::vector<long> *dst);
93 std::size_t
size()
const;
95 iterator
begin()
noexcept;
96 iterator
end()
noexcept;
98 const_iterator
begin()
const noexcept;
99 const_iterator
end()
const noexcept;
101 const_iterator
cbegin()
const noexcept;
102 const_iterator
cend()
const noexcept;
105 std::size_t
insert(Type type, Entity entity,
int rank = -1);
109 bool erase(std::size_t
id);
110 std::size_t
erase(Type type);
112 Info &
at(std::size_t
id);
113 const Info &
at(std::size_t
id)
const;
115 const std::vector<Info> &
data()
const noexcept;
116 std::vector<Info> &
data()
noexcept;
121 std::vector<Info>
dump();
124 typedef std::tuple<int, int, int> infoData_t;
126 std::unordered_map<infoData_t, std::size_t, utils::hashing::hash<infoData_t>> m_cache;
127 std::unordered_set<int> m_cachedTypes;
128 std::vector<Info> m_collection;
143 virtual void update(
const std::vector<adaption::Info> &adaptionData) = 0;
150 std::vector<long> m_numbering;
151 std::vector<long> m_mapping;
163 void update(
const std::vector<adaption::Info> &adaptionData)
override;
void update(const std::vector< adaption::Info > &adaptionData) override
const std::vector< long > & getMapping() const
const std::vector< long > & getNumbering() const
The PatchKernel class provides an interface for defining patches.
const std::vector< Info > & data() const noexcept
const_iterator cbegin() const noexcept
Info & operator[](std::size_t id)
bool erase(std::size_t id)
static std::size_t removeIds(std::unordered_set< long > src, std::vector< long > *dst)
const_iterator cend() const noexcept
iterator begin() noexcept
static void appendIds(std::vector< long > src, bool unique, std::vector< long > *dst)
std::vector< Info > dump()
Info & at(std::size_t id)
The namespace 'adaption' contains the routines and the data structures for handling patch adaption.
The namespace 'patch' contains routines for interacting with the patch manager.
The Info struct defines the infomation associated to an adaption.