Chrysalis - Pattern
Toggle main menu visibility
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
8
namespace
Chrysalis
{
9
template
<
typename
T>
10
class
AssociativeContainer
{
11
PROVIDE_SERIALIZATION_ACCESS_T
(
AssociativeContainer
)
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
Chrysalis::AssociativeContainer
Definition
AssociativeContainer.h:10
Chrysalis::AssociativeContainer::AssociativeContainer
AssociativeContainer()=default
Chrysalis::AssociativeContainer::count
size_t count() const
Definition
AssociativeContainer.h:21
Chrysalis::AssociativeContainer::end
std::vector< T * >::const_iterator end() const
Definition
AssociativeContainer.h:27
Chrysalis::AssociativeContainer::AssociativeContainer
AssociativeContainer(std::initializer_list< T * > items)
Definition
AssociativeContainer.h:14
Chrysalis::AssociativeContainer::add
virtual void add(T *item)
Definition
AssociativeContainer.h:18
Chrysalis::AssociativeContainer::operator[]
T * operator[](size_t index) const
Definition
AssociativeContainer.h:30
Chrysalis::AssociativeContainer::begin
std::vector< T * >::const_iterator begin() const
Definition
AssociativeContainer.h:24
Chrysalis::AssociativeContainer::~AssociativeContainer
virtual ~AssociativeContainer()=default
Chrysalis
Definition
Argument.h:9
Chrysalis::save_construct_data
void save_construct_data(Archive &archive, const Argument< T > *obj, const unsigned int)
Definition
Argument.h:25
Chrysalis::serialize
void serialize(Archive &archive, Argument< T > &obj, const unsigned int version)
Definition
Argument.h:25
Chrysalis::load_construct_data
void load_construct_data(Archive &archive, Argument< T > *obj, const unsigned int)
Definition
Argument.h:25
serialization.h
PROVIDE_SERIALIZATION_ACCESS_T
#define PROVIDE_SERIALIZATION_ACCESS_T(Class)
Definition
serialization.h:37
pattern
include
AssociativeContainer.h
Generated by
1.17.0