8#ifndef _ADTF_UCOM_ANT_LOCKED_OBJECT_INTERFACE_INCLUDES_HEADER_
9#define _ADTF_UCOM_ANT_LOCKED_OBJECT_INTERFACE_INCLUDES_HEADER_
102 virtual T*
Get()
const = 0;
121 virtual T*
Get()
const = 0;
133class object_ptr_locked_common
138 object_ptr_locked_common() =
default;
139 object_ptr_locked_common(object_ptr_locked_common&& o_oOther)
141 m_pObjectPtr.Swap(o_oOther.m_pObjectPtr);
148 return m_pObjectPtr.Get();
153 return *m_pObjectPtr.Get();
156 explicit operator bool()
const
158 return static_cast<bool>(m_pObjectPtr);
162 virtual void UnlockObject() = 0;
167 return m_pObjectPtr.Reset(i_oOther);
175 m_pObjectPtr =
nullptr;
179 void Swap(object_ptr_locked_common& i_oOther)
181 m_pObjectPtr.Swap(i_oOther.m_pObjectPtr);
186 return m_pObjectPtr.Get();
190 object_ptr_locked_common(
const object_ptr_locked_common&) =
delete;
191 object_ptr_locked_common& operator=(
const object_ptr_locked_common&) =
delete;
133class object_ptr_locked_common {
…};
222 base_type::Release();
229 base_type::Swap(o_oOther);
236 base_type::Release();
240 virtual T*
Get()
const override
242 return base_type::GetPtr();;
240 virtual T*
Get()
const override {
…}
247 return base_type::Reset(i_oOther);
288 base_type::Release();
295 base_type::Swap(o_oOther);
302 base_type::Release();
306 virtual T*
Get()
const override
308 return base_type::GetPtr();;
306 virtual T*
Get()
const override {
…}
313 return base_type::Reset(i_oOther);
332using ant::ILockedObject;
333using ant::ISharedLockedObject;
335using ant::iobject_ptr_locked;
336using ant::object_ptr_locked;
337using ant::iobject_ptr_shared_locked;
338using ant::object_ptr_shared_locked;
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
The ILockedObject interface defines exclusive locking of an object.
ADTF_IID(ILockedObject, "lockedobject.ant.ucom.adtf.iid")
Marks the ILockedObject to be castable with the ucom_cast<>
virtual tResult Lock() const =0
Locks the object for exclusive use.
virtual tResult Unlock() const =0
Unlocks the object for exclusive use.
~ILockedObject()=default
Protected destructor --> Only the final implementation can be destroyed!
Base class for every interface type within the uCOM.
The ISharedLockedObject interface defines shared locking of an object.
ADTF_IID(ISharedLockedObject, "sharedlockedobject.ant.ucom.adtf.iid")
Marks the ISharedLockedObject to be castable with the ucom_cast<>
virtual tResult UnlockShared() const =0
Unlocks the object for shared use.
~ISharedLockedObject()=default
Protected destructor --> Only the final implementation can be destroyed!
virtual tResult LockShared() const =0
Locks the object for shared use.
basic template for locked object tparam T value type
T * operator->() const
arrow access
Interfaces for a guarded exclusive lock.
virtual T * Get() const =0
returns the value as pointer
virtual tResult Reset(const iobject_ptr< T > &i_oOther)=0
Sets the value as pointer.
Interfaces for a guarded shared lock.
virtual T * Get() const =0
returns the value as pointer
virtual tResult Reset(const iobject_ptr< T > &i_oOther)=0
Sets the value as pointer.
Base object pointer to realize binary compatible reference counting in interface methods.
virtual T * Get() const override
returns the value as pointer
void UnlockObject() override
unlock the object
virtual tResult Reset(const iobject_ptr< T > &i_oOther) override
Sets the value as pointer.
object_ptr_locked()=default
CTOR.
object_ptr_locked & operator=(object_ptr_locked &&o_oOther)
move-assignment-operator
~object_ptr_locked()
DTOR.
object_ptr_locked(object_ptr_locked &&o_oOther)=default
move-CTOR
object_ptr_locked & operator=(std::nullptr_t)
null assignment-operator to Reset the value
object_ptr_shared_locked & operator=(std::nullptr_t)
null assignment-operator to Reset the value
object_ptr_shared_locked(object_ptr_shared_locked &&o_oOther)=default
move-CTOR
virtual T * Get() const override
returns the value as pointer
void UnlockObject() override
unlocks the object
virtual tResult Reset(const iobject_ptr< T > &i_oOther) override
Sets the value as pointer.
object_ptr_shared_locked()=default
CTOR.
object_ptr_shared_locked & operator=(object_ptr_shared_locked &&o_oOther)
move-assignment-operator
~object_ptr_shared_locked()
DTOR.
Namespace for all internally used uCOM functionality implemented.
Namespace for all functionality provided since v3.0.
InterfacePointerType ucom_cast(ObjectPointerType i_pObject)
Used to cast arbitrary interface types within the UCOM.
Namespace for the ADTF uCOM3 SDK.
ant::iobject_ptr< T > iobject_ptr
Alias always bringing the latest version of ant::iobject_ptr into scope.
Namespace for entire ADTF SDK.