Chrysalis - Pattern
Loading...
Searching...
No Matches
AssociativeContainer.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_ASSOCIATIVECONTAINER_H
2#define CHRYSALIS_ASSOCIATIVECONTAINER_H
3
4#include <vector>
5
6#include "serialization.h"
7
8namespace Chrysalis {
9 template<typename T>
12 public:
13 explicit AssociativeContainer() = default;
14 explicit AssociativeContainer(std::initializer_list<T*> items): items_(items) {}
15
16 virtual ~AssociativeContainer() = default;
17
18 virtual void add(T* item) {
19 items_.push_back(item);
20 }
21 size_t count() const {
22 return items_.size();
23 }
24 std::vector<T*>::const_iterator begin() const {
25 return items_.begin();
26 }
27 std::vector<T*>::const_iterator end() const {
28 return items_.end();
29 }
30 T* operator[](size_t index) const {
31 return items_[index];
32 }
33 private:
34 std::vector<T*> items_;
35 };
36 template <class Archive, typename T>
37 void serialize(Archive& archive, AssociativeContainer<T>& obj, const unsigned int version)
38 {
39 archive & obj.items_;
40 }
41
42 template <class Archive, typename T>
43 void save_construct_data(Archive& archive, const AssociativeContainer<T>* obj, const unsigned int)
44 {
45 archive & obj->items_;
46 }
47
48 template <class Archive, typename T>
49 void load_construct_data(Archive& archive, AssociativeContainer<T>* obj, const unsigned int)
50 {
51 decltype(obj->items_) items_;
52 archive >> items_;
53 ::new(obj) AssociativeContainer<T>();
54 }
55}
56
57#endif //CHRYSALIS_ASSOCIATIVECONTAINER_H
Definition AssociativeContainer.h:10
size_t count() const
Definition AssociativeContainer.h:21
std::vector< T * >::const_iterator end() const
Definition AssociativeContainer.h:27
AssociativeContainer(std::initializer_list< T * > items)
Definition AssociativeContainer.h:14
virtual void add(T *item)
Definition AssociativeContainer.h:18
T * operator[](size_t index) const
Definition AssociativeContainer.h:30
std::vector< T * >::const_iterator begin() const
Definition AssociativeContainer.h:24
virtual ~AssociativeContainer()=default
Definition Argument.h:9
void save_construct_data(Archive &archive, const Argument< T > *obj, const unsigned int)
Definition Argument.h:25
void serialize(Archive &archive, Argument< T > &obj, const unsigned int version)
Definition Argument.h:25
void load_construct_data(Archive &archive, Argument< T > *obj, const unsigned int)
Definition Argument.h:25
#define PROVIDE_SERIALIZATION_ACCESS_T(Class)
Definition serialization.h:37