LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
eventfactory.h
1
8
9#ifndef LDNDC_INPUT_EVENT_FACTORIES_H_
10#define LDNDC_INPUT_EVENT_FACTORIES_H_
11
12#include "event/events/eventbase.h"
13
14namespace ldndc{ namespace event{
15struct CBM_API abstract_event_factory_t
16{
17 abstract_event_factory_t() {}
18 virtual ~abstract_event_factory_t() = 0;
19 virtual ldndc::event::event_type_e event_type() const = 0;
20
21 virtual Event * construct(
22 lid_t const &, event_attribute_t **) const = 0;
23 static void destroy( Event * _event)
24 {
25 CBM_DefaultAllocator->destroy( _event);
26 }
27};
28
29template < typename _E, typename _A >
30struct event_factory_t : public abstract_event_factory_t
31{
32 event_factory_t()
33 : abstract_event_factory_t()
34 { }
35
36 ldndc::event::event_type_e event_type()
37 const
38 {
39 return (ldndc::event::event_type_e)_E::event_type_;
40 }
41
42 Event * construct( lid_t const & _id,
43 event_attribute_t ** _attribs)
44 const
45 {
46 _A * attr = CBM_DefaultAllocator->construct< _A >();
47 if ( _attribs)
48 {
49 *_attribs = static_cast< event_attribute_t * >( attr);
50 }
51 return static_cast< Event * >( CBM_DefaultAllocator->construct_args< _E >(
52 static_cast< size_t >( 1), _id, attr));
53 }
54};
55
56extern CBM_API abstract_event_factory_t const * event_factory[EVENT_CNT];
57extern CBM_API event_attribute_t const * event_attribute_defaults[EVENT_CNT];
58}}
59
60#endif /* !LDNDC_INPUT_EVENT_FACTORIES_H_ */
61
Spatially explicit groundwater model.
Definition airchemistryput.h:15