acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
container.h
1#pragma once
2
3
5#include "acme/parallelization/synchronization_array.h"
6#include "acme/prototype/data/data.h"
7
8
9namespace data
10{
11
12
13 class CLASS_DECL_ACME data_container :
14 virtual public ::object
15 {
16 public:
17
18
19 ::pointer<data> m_spdata;
20
21
22 data_container();
23 virtual ~data_container();
24
25
26 virtual bool set_data(::data::data * pdata);
27 data * get_data();
28
29 virtual bool is_data_locked() const;
30
31 virtual void on_update_data(::i32 iHint);
32
33 };
34
35
36 class CLASS_DECL_ACME data_container_base :
37 virtual public ::object
38 {
39 public:
40
41
42 data_map m_datamap;
43
44
45 data_container_base();
46 ~data_container_base() override;
47
48
49 void destroy() override;
50
51 virtual bool set_data(const ::atom & atom, ::data::data * pdata);
52 virtual bool add_data(::data::data * pdata);
53 virtual bool erase_data(::data::data * pdata);
54 virtual data * get_data(const ::atom & atom);
55 virtual ::pointer < data > create_data(const ::atom & atom);
56 virtual ::collection::count get_count() const;
57
58
59 virtual bool is_empty() const;
60
61
62 template < typename TYPE >
63 TYPE * get_typed_data(::collection::index i = 0)
64 {
65
66 return m_datamap.get_typed_ptr < TYPE >();
67
68 }
69
70
71 template < typename TYPE >
72 bool replace_data(const ::atom & atom, TYPE * pdata)
73 {
74
75 m_datamap.set_at(atom, pdata);
76
77 return true;
78
79 }
80
81
82 virtual synchronization_array get_synca();
83
84
85 };
86
87
88
89} // namespace data
90
91
92
Definition atom.h:237
Definition data.h:18
Definition synchronization_array.h:54