8 #include <rtti/typeinfo.h>
9 #include <rtti/objectptr.h>
36 virtual std::string
toString()
const = 0;
90 template<
class ComponentType>
112 virtual std::string
toString()
const override {
return mPath; }
127 virtual void assign(
const std::string& targetID,
rtti::Object* targetObject)
override;
132 ComponentType*
get()
const {
return mResource.
get(); }
137 ComponentType*
get() {
return mResource.
get(); }
139 const ComponentType&
operator*()
const { assert(mResource !=
nullptr);
return *mResource; }
141 ComponentType&
operator*() { assert(mResource !=
nullptr);
return *mResource; }
143 const ComponentType*
operator->()
const { assert(mResource !=
nullptr);
return mResource.
get(); }
145 ComponentType*
operator->() { assert(mResource !=
nullptr);
return mResource.
get(); }
149 template<
typename OTHER>
152 template<
typename OTHER>
153 bool operator==(
const OTHER* ptr)
const {
return mResource == ptr; }
155 bool operator==(std::nullptr_t)
const {
return mResource ==
nullptr; }
159 template<
typename OTHER>
162 template<
typename OTHER>
163 bool operator!=(
const OTHER* ptr)
const {
return mResource != ptr; }
165 bool operator!=(std::nullptr_t)
const {
return mResource !=
nullptr; }
180 template<
class ComponentType>
184 mResource = rtti_cast<ComponentType>(targetObject);
192 template<
typename TargetComponentType,
typename SourceComponentType>
239 template<
class TargetComponentType>
251 template<
class SourceComponentType>
254 SourceComponentType* resource = sourceComponentInstance->
getComponent<SourceComponentType>();
256 sourceComponentInstance->addToComponentLinkMap(target_component_resource.get(), target_component_resource.getInstancePath(), (
ComponentInstance**)&mInstance);
262 template<
class SourceComponentType>
277 template<
typename OTHER>
280 template<
typename OTHER>
281 bool operator==(
const OTHER* ptr)
const {
return mInstance == ptr; }
283 bool operator==(std::nullptr_t)
const {
return mInstance ==
nullptr; }
287 template<
typename OTHER>
290 template<
typename OTHER>
291 bool operator!=(
const OTHER* ptr)
const {
return mInstance != ptr; }
293 bool operator!=(std::nullptr_t)
const {
return mInstance !=
nullptr; }
308 template<
typename TargetComponentType_,
typename SourceComponentType_>
324 template<
typename TargetComponentType,
typename SourceComponentType>
325 ComponentInstancePtrInitProxy<TargetComponentType, SourceComponentType>
initComponentInstancePtr(ComponentInstance* sourceComponentInstance, ComponentPtr<TargetComponentType>(SourceComponentType::*componentMemberPointer));
335 template<
typename TargetComponentType,
typename SourceComponentType>
336 std::vector<ComponentInstancePtr<TargetComponentType>>
initComponentInstancePtr(ComponentInstance* sourceComponentInstance, std::vector<ComponentPtr<TargetComponentType>>(SourceComponentType::*componentMemberPointer));
346 struct wrapper_mapper<
nap::ComponentPtr<T>>
348 using wrapped_type = T*;
350 inline static wrapped_type get(
const type& obj) {
return obj.
get(); }
362 template<
typename TargetComponentType,
typename SourceComponentType>
366 return{ sourceComponentInstance, componentMemberPointer };
370 template<
typename TargetComponentType,
typename SourceComponentType>
371 std::vector<nap::ComponentInstancePtr<TargetComponentType>>
374 SourceComponentType* resource = sourceComponentInstance->
getComponent<SourceComponentType>();
375 std::vector<ComponentPtr<TargetComponentType>>& target_component_resource = resource->*componentMemberPointer;
377 std::vector<ComponentInstancePtr<TargetComponentType>> result;
378 result.resize(target_component_resource.size());
380 for (
int i = 0; i != result.size(); ++i)
381 sourceComponentInstance->addToComponentLinkMap(target_component_resource[i].get(), target_component_resource[i].getInstancePath(), (
ComponentInstance**)&result[i].mInstance);
friend std::vector< ComponentInstancePtr< TargetComponentType_ > > initComponentInstancePtr(ComponentInstance *sourceComponentInstance, std::vector< ComponentPtr< TargetComponentType_ >>(SourceComponentType_::*componentMemberPointer))
virtual void assign(const std::string &targetID, rtti::Object *targetObject) override
Definition: componentptr.h:181
const TargetComponentInstanceType & operator*() const
Definition: componentptr.h:267
bool operator>(const ComponentPtr< ComponentType > &other) const
Definition: componentptr.h:169
bool operator>=(const ComponentPtr< ComponentType > &other) const
Definition: componentptr.h:173
ComponentInstancePtr(const ComponentInstancePtrInitProxy< TargetComponentType, SourceComponentType > &proxy)
Definition: componentptr.h:263
bool operator!=(const ComponentInstancePtr< OTHER > &other) const
Definition: componentptr.h:288
TargetComponentInstanceType * get() const
Definition: componentptr.h:303
virtual void assign(const std::string &targetPath, rtti::Object *targetObject)=0
bool operator!=(const OTHER *ptr) const
Definition: componentptr.h:291
ComponentPtr< TargetComponentType > SourceComponentType::* mComponentMemberPointer
Member pointer to the ComponentPtr located in the Component.
Definition: componentptr.h:196
bool operator<(const ComponentPtr< ComponentType > &other) const
Definition: componentptr.h:167
bool operator!=(const ComponentInstancePtr< TargetComponentType > &other) const
Definition: componentptr.h:285
ComponentInstancePtrInitProxy< TargetComponentType, SourceComponentType > initComponentInstancePtr(ComponentInstance *sourceComponentInstance, ComponentPtr< TargetComponentType >(SourceComponentType::*componentMemberPointer))
Definition: componentptr.h:364
bool operator>(const ComponentInstancePtr< TargetComponentType > &other) const
Definition: componentptr.h:297
bool operator==(const OTHER *ptr) const
Definition: componentptr.h:153
ComponentType * get() const
Definition: componentptr.h:132
typename TargetComponentType::InstanceType TargetComponentInstanceType
Definition: componentptr.h:243
bool operator==(const OTHER *ptr) const
Definition: componentptr.h:281
virtual Component * toObject() const override
Definition: componentptr.h:118
virtual std::string toString() const =0
TargetComponentInstanceType * operator->()
Definition: componentptr.h:273
const std::string & getInstancePath() const
Definition: componentptr.h:106
bool operator!=(const ComponentPtr< ComponentType > &other) const
Definition: componentptr.h:157
bool operator==(const ComponentPtr< ComponentType > &other) const
Definition: componentptr.h:147
virtual ~ComponentPtrBase()=default
ComponentInstancePtr()=default
nap::Component * getComponent() const
Definition: component.h:74
bool operator==(const ComponentInstancePtr< TargetComponentType > &other) const
Definition: componentptr.h:275
ComponentType & operator*()
Definition: componentptr.h:141
TargetComponentInstanceType * get()
Definition: componentptr.h:305
const ComponentType & operator*() const
Definition: componentptr.h:139
bool operator==(const ComponentInstancePtr< OTHER > &other) const
Definition: componentptr.h:278
bool operator!=(const OTHER *ptr) const
Definition: componentptr.h:163
bool operator!=(std::nullptr_t) const
Definition: componentptr.h:165
ComponentInstancePtr(ComponentInstance *sourceComponentInstance, ComponentPtr< TargetComponentType >(SourceComponentType::*componentMemberPointer))
Definition: componentptr.h:252
ComponentPtr(ComponentType *component)
Definition: componentptr.h:100
virtual std::string toString() const override
Definition: componentptr.h:112
Definition: component.h:28
ComponentType * operator->()
Definition: componentptr.h:145
bool operator>=(const ComponentInstancePtr< TargetComponentType > &other) const
Definition: componentptr.h:301
Definition: component.h:43
Definition: componentptr.h:193
T * get() const
Definition: objectptr.h:181
Definition: component.h:151
Definition: componentptr.h:19
ComponentInstance * mSourceComponentInstance
The ComponentInstance that the ComponentInstancePtr is located in.
Definition: componentptr.h:195
bool operator!=(const ComponentPtr< OTHER > &other) const
Definition: componentptr.h:160
bool operator!=(std::nullptr_t) const
Definition: componentptr.h:293
bool operator==(const ComponentPtr< OTHER > &other) const
Definition: componentptr.h:150
bool operator<(const ComponentInstancePtr< TargetComponentType > &other) const
Definition: componentptr.h:295
Definition: templateapp.h:17
bool operator==(std::nullptr_t) const
Definition: componentptr.h:283
bool operator==(std::nullptr_t) const
Definition: componentptr.h:155
TargetComponentInstanceType & operator*()
Definition: componentptr.h:269
const ComponentType * operator->() const
Definition: componentptr.h:143
virtual Component * toObject() const =0
bool operator<=(const ComponentInstancePtr< TargetComponentType > &other) const
Definition: componentptr.h:299
static std::string translateTargetID(const std::string &targetID)
Definition: component.h:31
TargetComponentInstanceType * operator->() const
Definition: componentptr.h:271
ComponentType * get()
Definition: componentptr.h:137
bool operator<=(const ComponentPtr< ComponentType > &other) const
Definition: componentptr.h:171