PeriDyno 1.2.1
Loading...
Searching...
No Matches
DeclarePort.h
Go to the documentation of this file.
1
16#pragma once
17
18namespace dyno
19{
20#define DEF_VAR_STATE(T, name, value, desc) \
21private: \
22 FVar<T> state_##name = FVar<T>(T(value), std::string(#name), desc, FieldTypeEnum::State, this); \
23public: \
24 inline FVar<T>* state##name() {return &state_##name;}
25
30#define DEF_ARRAY_STATE(T, name, device, desc) \
31private: \
32 FArray<T, device> state_##name = FArray<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
33public: \
34 inline FArray<T, device>* state##name() {return &state_##name;}
35
36
37#define DEF_ARRAY2D_STATE(T, name, device, desc) \
38private: \
39 FArray2D<T, device> state_##name = FArray2D<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
40public: \
41 inline FArray2D<T, device>* state##name() {return &state_##name;}
42
43#define DEF_ARRAY3D_STATE(T, name, device, desc) \
44private: \
45 FArray3D<T, device> state_##name = FArray3D<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
46public: \
47 inline FArray3D<T, device>* state##name() {return &state_##name;}
48
49
50#define DEF_ARRAYLIST_STATE(T, name, device, desc) \
51private: \
52 FArrayList<T, device> state_##name = FArrayList<T, device>(std::string(#name), desc, FieldTypeEnum::State, this); \
53public: \
54 inline FArrayList<T, device>* state##name() {return &state_##name;}
55
59#define DEF_INSTANCE_STATE(T, name, desc) \
60private: \
61 FInstance<T> state_##name = FInstance<T>(std::string(#name), desc, FieldTypeEnum::State, this); \
62public: \
63 inline FInstance<T>* state##name() {return &state_##name;}
64
69#define DEF_INSTANCE_STATE(T, name, desc) \
70private: \
71 FInstance<T> state_##name = FInstance<T>(std::string(#name), desc, FieldTypeEnum::State, this); \
72public: \
73 inline FInstance<T>* state##name() {return &state_##name;}
74
78
79#define DEF_INSTANCES_IN(T, name, desc) \
80private: \
81 FInstances<T> in_##name = FInstances<T>(std::string(#name)+std::string("(s)"), desc, FieldTypeEnum::In, this); \
82public: \
83 inline FInstances<T>* in##name##s() {return &in_##name;}
84
85
90#define DEF_NODE_PORT(T, name, desc) \
91private: \
92 SingleNodePort<T> single_##name = SingleNodePort<T>(std::string(#name), desc, this); \
93public: \
94 inline T* get##name() { return single_##name.getDerivedNode(); } \
95 \
96 SingleNodePort<T>* import##name(){ return &single_##name; }
97
98
99#define DEF_NODE_PORTS(T, name, desc) \
100private: \
101 MultipleNodePort<T> multiple_##name = MultipleNodePort<T>(std::string(#name)+std::string("(s)"), desc, this); \
102public: \
103 inline MultipleNodePort<T>* import##name##s() { return &multiple_##name; } \
104 inline std::vector<T*>& get##name##s(){return multiple_##name.getDerivedNodes();} \
105 \
106 bool add##name(std::shared_ptr<T> c){ \
107 multiple_##name.addDerivedNode(c.get()); \
108 return true; \
109 } \
110 \
111 bool remove##name(std::shared_ptr<T> c) { \
112 multiple_##name.removeDerivedNode(c.get()); \
113 return true; \
114 }
115}
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25