PeriDyno 1.0.0
Loading...
Searching...
No Matches
DeclarePort.h
Go to the documentation of this file.
1
16#pragma once
17
18namespace dyno
19{
24#define DEF_ARRAY_STATE(T, name, device, desc) \
25private: \
26 FArray<T, device> state_##name = FArray<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
27public: \
28 inline FArray<T, device>* state##name() {return &state_##name;}
29
30
31#define DEF_ARRAY2D_STATE(T, name, device, desc) \
32private: \
33 FArray2D<T, device> state_##name = FArray2D<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
34public: \
35 inline FArray2D<T, device>* state##name() {return &state_##name;}
36
37#define DEF_ARRAY3D_STATE(T, name, device, desc) \
38private: \
39 FArray3D<T, device> state_##name = FArray3D<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
40public: \
41 inline FArray3D<T, device>* state##name() {return &state_##name;}
42
43
44#define DEF_ARRAYLIST_STATE(T, name, device, desc) \
45private: \
46 FArrayList<T, device> state_##name = FArrayList<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
47public: \
48 inline FArrayList<T, device>* state##name() {return &state_##name;}
49
53#define DEF_INSTANCE_STATE(T, name, desc) \
54private: \
55 FInstance<T> state_##name = FInstance<T>(std::string(#name), desc, FieldTypeEnum::State, this); \
56public: \
57 inline FInstance<T>* state##name() {return &state_##name;}
58
63#define DEF_NODE_PORT(T, name, desc) \
64private: \
65 SingleNodePort<T> single_##name = SingleNodePort<T>(std::string(#name), desc, this); \
66public: \
67 inline T* get##name() { return single_##name.getDerivedNode(); } \
68 \
69 SingleNodePort<T>* import##name(){ return &single_##name; }
70
71
72#define DEF_NODE_PORTS(T, name, desc) \
73private: \
74 MultipleNodePort<T> multiple_##name = MultipleNodePort<T>(std::string(#name)+std::string("(s)"), desc, this); \
75public: \
76 inline MultipleNodePort<T>* import##name##s() { return &multiple_##name; } \
77 inline std::vector<T*>& get##name##s(){return multiple_##name.getDerivedNodes();} \
78 \
79 bool add##name(std::shared_ptr<T> c){ \
80 multiple_##name.addDerivedNode(c.get()); \
81 return true; \
82 } \
83 \
84 bool remove##name(std::shared_ptr<T> c) { \
85 multiple_##name.removeDerivedNode(c.get()); \
86 return true; \
87 }
88}
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25