SEVN
Loading...
Searching...
No Matches
Collision.h
Go to the documentation of this file.
1//
2// Created by iorio on 3/1/22.
3//
4
138#ifndef SEVN_COLLISION_H
139#define SEVN_COLLISION_H
140
141#include <IO.h>
142#include <Processes.h>
143#include <binstar.h>
144#include <star.h>
145
146//Forward declaration
147class Star;
148class Binstar;
149
150
151class Kollision : public Process{
152
153public:
154
155 Kollision(_UNUSED IO *_io= nullptr, bool reg = true) {
156 if (reg) {
157 //First register to include this Property in static array
158 Register(this, &ID, name());
159 }
160 }
161
162 static size_t ID;
164 inline std::string name() override { return "Collision"; }
165
166 Kollision *Instance(_UNUSED IO *_io) override;
167 virtual Kollision *instance() {return nullptr;}
168
169 bool is_process_ongoing() const override {return false;};
170
171
172
173 static std::string log_message(_UNUSED Binstar *binstar);
174
175 typedef unsigned int collision_outcome;
176 static constexpr int NO_COLLISION=0;
177 static constexpr int COLLISION_CE=1;
178 static constexpr int COLLISION_MIX=2;
179
180protected:
181
183 //this a prototype for the future refactoring of the whole Process classes
184 static std::map<std::string, Kollision *> & GetStaticMap(){
185 static std::map<std::string, Kollision *> _locmap;
186 return _locmap;
187 }
188 static std::vector<int> & GetUsed(){
189 static std::vector<int> _used;
190 return _used;
191 }
192 static void Register_specific(Kollision *ptr) {
193 GetStaticMap().insert(std::make_pair(ptr->name(), ptr));
194 GetUsed().resize(GetStaticMap().size());
195 GetUsed()[GetUsed().size()-1] = 0;
196 }
197
198
199};
200
201
203
204public:
205
206 KollisionDisabled(_UNUSED IO *_io= nullptr, bool reg = true) : Kollision(nullptr, false) {
207 if(reg) {
208 //Second register to handle the different options
209 Register_specific(this);
210 }
211 }
212
213 inline std::string name() override { return "disabled"; }
216 return (new KollisionDisabled(nullptr,false));
217 }
218 int evolve(_UNUSED Binstar *binstar) override;
219};
220
222
223public:
224
225 KollisionHurley(_UNUSED IO *_io= nullptr, bool reg = true) : Kollision(nullptr, false) {
226 if(reg) {
227 //Second register to handle the different options
228 Register_specific(this);
229 }
230 }
231
232 inline std::string name() override { return "hurley"; }
235 return (new KollisionHurley(nullptr,false));
236 }
237 int evolve(_UNUSED Binstar *binstar) override;
238
239 static bool check_collision(Binstar *b);
241
242};
243
244
245
246
247
248#endif //SEVN_COLLISION_H
#define _UNUSED
Definition: BinaryProperty.h:20
Definition: binstar.h:26
Definition: IO.h:53
Definition: Collision.h:202
static KollisionDisabled _kollisiondisabled
Definition: Collision.h:214
std::string name() override
Definition: Collision.h:213
int evolve(_UNUSED Binstar *binstar) override
Definition: Collision.cpp:52
KollisionDisabled * instance() override
Definition: Collision.h:215
KollisionDisabled(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Collision.h:206
Definition: Collision.h:151
static void Register_specific(Kollision *ptr)
Definition: Collision.h:192
static std::string log_message(_UNUSED Binstar *binstar)
Definition: Collision.cpp:33
virtual Kollision * instance()
Definition: Collision.h:167
static size_t ID
Definition: Collision.h:162
static Kollision _kollision
Definition: Collision.h:163
static constexpr int COLLISION_CE
Definition: Collision.h:177
Kollision(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Collision.h:155
bool is_process_ongoing() const override
Definition: Collision.h:169
Kollision * Instance(_UNUSED IO *_io) override
Definition: Collision.cpp:10
static constexpr int COLLISION_MIX
Definition: Collision.h:178
static std::map< std::string, Kollision * > & GetStaticMap()
Notice this stuff are here and used only for the process Kollision.
Definition: Collision.h:184
std::string name() override
Definition: Collision.h:164
static constexpr int NO_COLLISION
Definition: Collision.h:176
static std::vector< int > & GetUsed()
Definition: Collision.h:188
unsigned int collision_outcome
Definition: Collision.h:175
Definition: Collision.h:221
static collision_outcome outcome_collision(Binstar *b)
Definition: Collision.cpp:56
std::string name() override
Definition: Collision.h:232
KollisionHurley * instance() override
Definition: Collision.h:234
KollisionHurley(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Collision.h:225
int evolve(_UNUSED Binstar *binstar) override
Definition: Collision.cpp:83
static bool check_collision(Binstar *b)
Definition: Collision.cpp:71
static KollisionHurley _kollisionhurley
Definition: Collision.h:233
Definition: Processes.h:43
void Register(Process *_p, size_t *id, const std::string &_name)
Definition: Processes.h:159
static size_t size
Definition: Processes.h:140
Definition: star.h:39