acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
action_context.h
1#pragma once
2
3
4#include "acme/constant/source.h"
5#include "acme/platform/acme_message.h"
6
7
8class CLASS_DECL_ACME action_context
9{
10public:
11
12
13 bool m_bRet : 1;
14 e_source m_esource;
15 pointer< pointer_array < ::particle > > m_pparticlea;
16 ::pointer<::acme::message> m_pmessage;
17 ::pointer < ::user::activation_token > m_puseractivationtoken;
18
19
20 action_context() { }
21 action_context(const enum_source esource) : m_esource(esource) { }
22 action_context(const ::e_source esource) : m_esource(esource) { }
23 action_context(const action_context & action_context) : m_esource(action_context.m_esource), m_pparticlea(action_context.m_pparticlea) {}
24 virtual ~action_context() {}
25
26
27 inline void add(e_source esource) { m_esource.add(esource); }
28 void add(const ::particle * pparticle);
29 ::collection::index find(const ::particle * pparticle) const;
30 bool contains(const ::particle * pparticle) const;
31
32 inline bool is(e_source esource) const { return m_esource.has(esource); }
33 inline bool is_user_source() const { return is(e_source_user); }
34 inline bool has(e_source esource) const { return is(esource); }
35
36
37 inline bool operator &(e_source esource) const { return has(esource); }
38
39 inline ::action_context & operator |=(e_source esource) { add(esource); return *this; }
40 inline ::action_context & operator +=(e_source esource) { add(esource); return *this; }
41
42
43 action_context & operator = (const action_context & action_context)
44 {
45 if (this != &action_context)
46 {
47 m_esource = action_context.m_esource;
48 m_pparticlea = action_context.m_pparticlea;
49 m_pmessage = action_context.m_pmessage;
50 }
51 return *this;
52 }
53
54 IMPL_OPERATOR_PLUS(action_context);
55
56
57 virtual ::user::activation_token * user_activation_token();
58
59
60};
61
62
63//CLASS_DECL_ACME e_source translation_source(e_source esource, enum_context econtextDst, enum_context econtextSrc);
64
65//namespace source
66//{
67//
68// static inline action_context add(e_source esourceAdd, e_source esource) { action_context ctx(esource); return ctx + esourceAdd; }
69// static inline action_context erase(e_source esource, e_source esourceRemove) { action_context ctx(esource); return ctx - esourceRemove; }
70// static inline action_context add_erase(e_source esource, e_source esourceAdd, e_source esourceRemove) { action_context ctx(esource); return ctx + esourceAdd - esourceRemove; }
71// static inline action_context synchronization(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(::e_source_sync, esourceAdd, esourceRemove); }
72// static inline action_context sel(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(source_selection, esourceAdd, esourceRemove); }
73// static inline action_context user(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(::e_source_user, esourceAdd, esourceRemove); }
74// static inline action_context database(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(::e_source_database, esourceAdd, esourceRemove); }
75// static inline action_context system(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(source_system, esourceAdd, esourceRemove); }
76// static inline action_context data(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(source_data, esourceAdd, esourceRemove); }
77// static inline action_context op(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return add_erase(source_operator, esourceAdd, esourceRemove); }
78//
79//
80// static inline action_context add(action_context ctx, e_source esourceAdd) { return ctx + esourceAdd; }
81// static inline action_context erase(action_context ctx, e_source esourceRemove) { return ctx - esourceRemove; }
82// static inline action_context add_erase(action_context ctx, e_source esourceAdd, e_source esourceRemove) { return ctx + esourceAdd - esourceRemove; }
83// static inline action_context synchronization(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, ::e_source_sync, esourceRemove); }
84// static inline action_context sel(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, source_selection, esourceRemove); }
85// static inline action_context user(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, ::e_source_user, esourceRemove); }
86// static inline action_context database(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, ::e_source_database, esourceRemove); }
87// static inline action_context system(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, source_system, esourceRemove); }
88// static inline action_context data(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, source_data, esourceRemove); }
89// static inline action_context op(action_context ctx, e_source esourceRemove = source_none) { return add_erase(ctx, source_operator, esourceRemove); }
90//
91//
92//
93// static inline action_context system_default(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return system(add(source_default, esourceAdd), esourceRemove); }
94// static inline action_context database_default(e_source esourceAdd = source_none, e_source esourceRemove = source_none) { return database(add(source_default, esourceAdd), esourceRemove); }
95// static inline action_context system_default(action_context ctx, e_source esourceRemove = source_none) { return system(add(ctx, source_default), esourceRemove); }
96// static inline action_context database_default(action_context ctx, e_source esourceRemove = source_none) { return database(add(ctx, source_default), esourceRemove); }
97//
98//}
99//
100//