acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
make_particle.h
1// Created by camilo on 2024-08-27 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5
6
7template < typename TYPE >
8class make_particle1 :
9 virtual public ::particle,
10 public TYPE
11{
12public:
13
14
15 using TYPE::TYPE;
16 using TYPE::operator = ;
17
18
19 make_particle1(const TYPE & t) :
20 TYPE(t)
21 {
22
23
24 }
25
26};
27
28
29
30
31template < typename TYPE >
32class array_particle :
33 virtual public ::particle,
34 public TYPE
35{
36public:
37
38
39 using TYPE::TYPE;
40 using TYPE::operator = ;
41 using TYPE::operator += ;
42 using BASE_ARRAY = TYPE;
43 using RAW_BASE_ARRAY = typename BASE_ARRAY::RAW_BASE_ARRAY;
44
45
46 array_particle(const RAW_BASE_ARRAY& a) : BASE_ARRAY(a) {}
47 //array_particle(RAW_BASE_ARRAY&& a) : BASE_ARRAY(::transfer(a)) {}
48
49
50 void destroy() override
51 {
52
53 TYPE::destroy();
54
55 }
56
57
58};
59
60
61template < typename TYPE >
62class comparable_eq_array_particle :
63 virtual public ::particle,
64 public TYPE
65{
66public:
67
68
69 using TYPE::TYPE;
70 using TYPE::operator = ;
71 using TYPE::operator += ;
72 using TYPE::operator -= ;
73 using BASE_ARRAY = TYPE;
74 using RAW_BASE_ARRAY = typename BASE_ARRAY::RAW_BASE_ARRAY;
75
76
77 comparable_eq_array_particle(const RAW_BASE_ARRAY& a) : BASE_ARRAY(a) {}
78
79
80 void destroy() override
81 {
82
83 TYPE::destroy();
84
85 }
86
87
88};
89
90
91template < typename TYPE >
92class comparable_array_particle :
93 virtual public ::particle,
94 public TYPE
95{
96public:
97
98
99 using TYPE::TYPE;
100 using TYPE::operator = ;
101 using TYPE::operator += ;
102 using TYPE::operator -= ;
103 using BASE_ARRAY = TYPE;
104 using RAW_BASE_ARRAY = typename BASE_ARRAY::RAW_BASE_ARRAY;
105
106
107 comparable_array_particle(const RAW_BASE_ARRAY& a) : BASE_ARRAY(a) { }
108
109
110 void destroy() override
111 {
112
113 TYPE::destroy();
114
115 }
116
117
118};
119
120
121
122template < typename T>
123auto create_particle_from(const T & t)
124{
125
126 auto p = allocateø make_particle1< T >(t);
127
128 return p;
129
130}
131
Definition make_particle.h:11