55 typedef std::pair<index_t, T*> entry_t;
65 T & getCloned()
const = 0;
68 entry_t getClonerEntry()
const = 0;
91 size_t count()
const = 0;
117template <
class B,
class S>
126 typedef typename clonerbase_t::entry_t entry_t;
128 typedef std::map<index_t,S *> ptr_container_t;
143 for (
typename ptr_container_t::iterator it=ptrs.begin(); it!= ptrs.end(); ++it){
176 typename ptr_container_t::iterator it = ptrs.find(i);
177 if (it == ptrs.end()){
178 std::stringstream sstr;
179 sstr << __FILE__ <<
':' << __FUNCTION__ <<
": index not found: "<< i;
180 throw std::runtime_error(sstr.str());
196 entry_t getClonerEntry()
const {
200 return entry_t(i, ptr);
244 size_t count()
const {
251 bool drop(index_t i)
const override {
253 const typename ptr_container_t::iterator it = ptrs.find(i);
255 if (it != ptrs.end()){
263 std::cerr <<
"already deleted or does not exist: " << i <<
'\n';
299 if (this->ptrs.empty())
303 return this->ptrs.rbegin()->first + 1;
310 ptr_container_t ptrs;
Definition DataSelector.cpp:1277
virtual T & getSource()=0
Returns a reference to an instance.
size_t index_t
Each cloned entry has an index.
Definition Cloner.h:52
virtual const T & getSource() const =0
Returns a reference to an instance (possibly a static one?).
virtual bool drop(index_t i) const =0
Remove cloned entry (experimental)
virtual T & getCloned(index_t i) const =0
Returns an instance at index i.
Wrapper for derived class S, returning base class T.
Definition Cloner.h:118
index_t getNewIndex() const
Remove cloned entries.
Definition Cloner.h:296
S src
Default instance, also the source for cloning.
Definition Cloner.h:275
Cloner(const S &s)
Constructor with source object (copied)
Definition Cloner.h:138
virtual B & getSource()
Returns a reference to a default instance.
Definition Cloner.h:220
virtual const B & getSource() const
Returns a const reference to a default instance.
Definition Cloner.h:211
Cloner(const Cloner< B, S > &c)
Copy constructor.
Definition Cloner.h:134
B & getCloned() const
Implements interface.
Definition Cloner.h:150
virtual S & getSourceOrig()
Returns a reference to a default instance, in actual class.
Definition Cloner.h:238
virtual const S & getSourceOrig() const
Returns a const reference to a default instance, in actual class.
Definition Cloner.h:229
virtual B & getCloned(index_t i) const
Returns.
Definition Cloner.h:175
virtual bool drop(index_t i) const override
Remove cloned entry.
Definition Cloner.h:251
S & getClonedSrc() const
Returns a object of class S, initialized with the source.
Definition Cloner.h:187