7 #define M_PI 3.1415926535897932384626433832795029
11 #define END_OF_LOOP -2
15 #define END_OF_FACE -1
20 enum class LX_OPENLXAPP_EXPORT SDK_Language
27 enum class LX_OPENLXAPP_EXPORT View_Direction
39 enum class LX_OPENLXAPP_EXPORT Event
77 ss << name <<
" Version: " << major <<
"." << minor <<
" Build " << revision;
93 #define FORWARD_DECL(x, y) \
99 #define PLUGIN_HEADER(_class_) \
101 std::string getName() override { return #_class_; }
103 #define PLUGIN_SOURCE(_class_) \
104 PLUGINDECL App::Plugin* createPlugin(App::PluginManager& mgr) { return (App::Plugin*)new _class_(); }
119 #define OBJECT_HEADER(_class_, _type_) \
121 static LxIfc4::LxIfc4EntityEnum getEntityType_Static() { return LxIfc4::_type_; } \
123 explicit _class_(std::shared_ptr<_class_> other) { _coreObj = other->_coreObj; } \
124 _class_& operator=(std::shared_ptr<_class_> other) \
126 _coreObj = other->_coreObj; \
129 friend bool operator==(std::shared_ptr<_class_> x, std::shared_ptr<_class_> y) { return x->_coreObj == y->_coreObj; } \
130 friend bool operator!=(std::shared_ptr<_class_> x, std::shared_ptr<_class_> y) { return !(x == y); } \
131 friend bool operator<(std::shared_ptr<_class_> x, std::shared_ptr<_class_> y) { return x->_coreObj < y->_coreObj; } \
132 friend bool operator>(std::shared_ptr<_class_> x, std::shared_ptr<_class_> y) { return y < x; } \
133 friend bool operator<=(std::shared_ptr<_class_> x, std::shared_ptr<_class_> y) { return !(x > y); } \
134 friend bool operator>=(std::shared_ptr<_class_> x, std::shared_ptr<_class_> y) { return !(x < y); } \
135 bool isEqual(std::shared_ptr<_class_> other) const { return (_coreObj == other->_coreObj); }
137 #define PROXY_HEADER_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_) \
138 OBJECT_HEADER(_openlexocadclass_, _type_) \
140 _openlexocadclass_(_corelexocadclass_* aObj); \
143 _corelexocadclass_* __getCasted__() const;
146 #define PROXY_HEADER(_openlexocadclass_, _corelexocadclass_, _type_) \
147 PROXY_HEADER_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_) \
149 _openlexocadclass_(std::shared_ptr<OpenLxApp::Document> aDoc); \
152 static std::shared_ptr<_openlexocadclass_> createIn(std::shared_ptr<OpenLxApp::Document> aDoc); \
155 static std::shared_ptr<_openlexocadclass_> createFrom(_corelexocadclass_* aObj);
159 #define PROXY_SOURCE_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_) \
160 _corelexocadclass_* _openlexocadclass_::__getCasted__() const \
162 auto casted = dynamic_cast<_corelexocadclass_*>(_coreObj); \
166 #define PROXY_SOURCE(_openlexocadclass_, _corelexocadclass_, _type_) \
167 PROXY_SOURCE_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_) \
168 _openlexocadclass_::_openlexocadclass_(std::shared_ptr<OpenLxApp::Document> aDoc) \
169 { _coreObj = aDoc->__getInternalDoc__()->createObject<_corelexocadclass_>(); } \
170 std::shared_ptr<_openlexocadclass_> _openlexocadclass_::createIn(std::shared_ptr<OpenLxApp::Document> aDoc) \
172 auto obj = aDoc->__getInternalDoc__()->createObject<_corelexocadclass_>(); \
174 if(obj) return std::make_shared<_openlexocadclass_>(obj); \
175 else return nullptr;\
177 std::shared_ptr<_openlexocadclass_> _openlexocadclass_::createFrom(_corelexocadclass_* aObj) \
179 if(aObj) return std::make_shared<_openlexocadclass_>(aObj); \
180 else return nullptr; \
182 #define PROXY_SOURCE_CUSTOM_CREATE(_openlexocadclass_, _corelexocadclass_, _type_) \
183 PROXY_SOURCE_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_)
185 #define PROXY_SOURCE_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_) \
186 _corelexocadclass_* _openlexocadclass_::__getCasted__() const \
188 auto casted = dynamic_cast<_corelexocadclass_*>(_coreObj); \
191 #define PROXY_SOURCE(_openlexocadclass_, _corelexocadclass_, _type_) \
192 PROXY_SOURCE_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_) \
193 _openlexocadclass_::_openlexocadclass_(std::shared_ptr<OpenLxApp::Document> aDoc) \
194 { _coreObj = aDoc->__getInternalDoc__()->createObject<_corelexocadclass_>(); } \
195 std::shared_ptr<_openlexocadclass_> _openlexocadclass_::createIn(std::shared_ptr<OpenLxApp::Document> aDoc) \
197 auto obj = aDoc->__getInternalDoc__()->createObject<_corelexocadclass_>(); \
198 if(obj) return std::make_shared<_openlexocadclass_>(obj); \
199 else return nullptr; \
201 std::shared_ptr<_openlexocadclass_> _openlexocadclass_::createFrom(_corelexocadclass_* aObj) \
203 if(aObj) return std::make_shared<_openlexocadclass_>(aObj); \
204 else return nullptr; \
206 #define PROXY_SOURCE_CUSTOM_CREATE(_openlexocadclass_, _corelexocadclass_, _type_) \
207 PROXY_SOURCE_ABSTRACT(_openlexocadclass_, _corelexocadclass_, _type_)
211 #define EXT_FORWARD_DECL(_class_) class _class_##_Proxy;
213 #define EXT_DECLARE_PROXYOBJECT(_class_, _parentclass_) \
214 class _class_##_Proxy : public _parentclass_ \
216 OBJECT_HEADER(_class_##_Proxy, IFC_ENTITY_UNDEFINED) \
218 _class_##_Proxy(_class_* aObject) : _parentclass_(aObject) { assert(aObject); } \
219 virtual ~_class_##_Proxy(void) {} \
222 _class_##_Proxy() {} \
224 DECLARE_OBJECT_FACTORY(_class_##_Factory, _class_, IFC_ENTITY_UNDEFINED);
227 #define EXT_OBJECT_SOURCE(_class_, _parent_) \
228 TYPESYSTEM_SOURCE(_class_, _parent_) \
229 LX_NODE_SOURCE(_class_, _parent_)
231 #define EXT_FORWARD_DECL(_class_) class _class_##_Proxy;
242 #define DECL_PROPERTY(_class_, _name_, _type_) \
244 _type_ get##_name_() const; \
247 void set##_name_(const _type_& aValue);
249 #define DEFINE_PROPERTY(_class_, _name_, _propname_, _type_) \
250 _type_ _class_::get##_name_() const { return __getCasted__()->_propname_.getValue(); } \
251 void _class_::set##_name_(const _type_& aValue) { __getCasted__()->_propname_.setValue(aValue); }