 |
GridGain C++
|
Go to the documentation of this file.
22 #ifndef _IGNITE_COMMON_REFERENCE
23 #define _IGNITE_COMMON_REFERENCE
27 #include <ignite/common/common.h>
28 #include <ignite/common/concurrent.h>
29 #include <ignite/common/reference_impl.h>
71 explicit ConstReference(common::ConstReferenceImplBase* ptr, ptrdiff_t offset = 0) :
103 T2* p0 =
reinterpret_cast<T2*
>(common::POINTER_CAST_MAGIC_NUMBER);
104 T* p1 =
static_cast<T*
>(p0);
106 ptrdiff_t diff =
reinterpret_cast<ptrdiff_t
>(p1) -
reinterpret_cast<ptrdiff_t
>(p0);
118 offset = other.offset;
131 template<
typename T2>
135 offset = other.offset;
137 T2* p0 =
reinterpret_cast<T2*
>(common::POINTER_CAST_MAGIC_NUMBER);
138 T* p1 =
static_cast<T*
>(p0);
140 ptrdiff_t diff =
reinterpret_cast<ptrdiff_t
>(p1) -
reinterpret_cast<ptrdiff_t
>(p0);
164 return reinterpret_cast<const T*
>(
reinterpret_cast<ptrdiff_t
>(ptr.Get()->Get()) + offset);
174 const common::ConstReferenceImplBase* raw = ptr.Get();
176 return !raw || !raw->Get();
181 common::concurrent::SharedPointer<common::ConstReferenceImplBase> ptr;
199 friend class Reference;
217 explicit Reference(common::ReferenceImplBase* ptr, ptrdiff_t offset = 0) :
243 template<
typename T2>
248 T2* p0 =
reinterpret_cast<T2*
>(common::POINTER_CAST_MAGIC_NUMBER);
249 T* p1 =
static_cast<T*
>(p0);
251 ptrdiff_t diff =
reinterpret_cast<ptrdiff_t
>(p1) -
reinterpret_cast<ptrdiff_t
>(p0);
263 offset = other.offset;
275 template<
typename T2>
279 offset = other.offset;
281 T2* p0 =
reinterpret_cast<T2*
>(common::POINTER_CAST_MAGIC_NUMBER);
282 T* p1 =
static_cast<T*
>(p0);
284 ptrdiff_t diff =
reinterpret_cast<ptrdiff_t
>(p1) -
reinterpret_cast<ptrdiff_t
>(p0);
305 template<
typename T2>
313 T2* p0 =
reinterpret_cast<T2*
>(common::POINTER_CAST_MAGIC_NUMBER);
314 const T* p1 =
static_cast<T*
>(p0);
316 ptrdiff_t diff =
reinterpret_cast<ptrdiff_t
>(p1) -
reinterpret_cast<ptrdiff_t
>(p0);
332 return reinterpret_cast<const T*
>(
reinterpret_cast<ptrdiff_t
>(ptr.Get()->Get()) + offset);
345 return reinterpret_cast<T*
>(
reinterpret_cast<ptrdiff_t
>(ptr.Get()->Get()) + offset);
355 const common::ReferenceImplBase* raw = ptr.Get();
357 return !raw || !raw->Get();
362 common::concurrent::SharedPointer<common::ReferenceImplBase> ptr;
385 common::ReferenceSmartPointer<T>* impl =
new common::ReferenceSmartPointer<T>();
411 common::ReferenceSmartPointer<T>* impl =
new common::ReferenceSmartPointer<T>();
432 common::ReferenceOwningRawPointer<T>* impl =
new common::ReferenceOwningRawPointer<T>(
new T(val));
449 common::ReferenceOwningRawPointer<T>* impl =
new common::ReferenceOwningRawPointer<T>(
new T(val));
467 common::ReferenceOwningRawPointer<T>* impl =
new common::ReferenceOwningRawPointer<T>(val);
485 common::ReferenceOwningRawPointer<T>* impl =
new common::ReferenceOwningRawPointer<T>(val);
503 common::ReferenceNonOwningRawPointer<T>* impl =
new common::ReferenceNonOwningRawPointer<T>(&val);
521 common::ReferenceNonOwningRawPointer<T>* impl =
new common::ReferenceNonOwningRawPointer<T>(val);
539 common::ConstReferenceNonOwningRawPointer<T>* impl =
new common::ConstReferenceNonOwningRawPointer<T>(&val);
557 common::ConstReferenceNonOwningRawPointer<T>* impl =
new common::ConstReferenceNonOwningRawPointer<T>(val);
563 #endif //_IGNITE_COMMON_REFERENCE
ConstReference< T > MakeConstReferenceFromOwningPointer(T *val)
Make ignite::ConstReference instance out of pointer and pass its ownership.
Definition: reference.h:483
Ignite API.
Definition: cache.h:47
ConstReference(common::ConstReferenceImplBase *ptr, ptrdiff_t offset=0)
Constructor.
Definition: reference.h:71
~Reference()
Destructor.
Definition: reference.h:293
Reference< T > MakeReference(T &val)
Make ignite::Reference instance out of reference.
Definition: reference.h:501
ConstReference()
Default constructor.
Definition: reference.h:58
ConstReference< T > MakeConstReference(const T &val)
Make ignite::ConstReference instance out of constant reference.
Definition: reference.h:537
Reference< typename T::element_type > MakeReferenceFromSmartPointer(T ptr)
Make ignite::Reference instance out of smart pointer.
Definition: reference.h:383
ConstReference(const ConstReference &other)
Copy constructor.
Definition: reference.h:83
ConstReference & operator=(const ConstReference &other)
Assignment operator.
Definition: reference.h:115
Reference & operator=(const Reference< T2 > &other)
Assignment operator.
Definition: reference.h:276
Reference(const Reference &other)
Copy constructor.
Definition: reference.h:229
const T * Get() const
Dereference the pointer.
Definition: reference.h:330
Reference()
Default constructor.
Definition: reference.h:204
ConstReference< typename T::element_type > MakeConstReferenceFromSmartPointer(T ptr)
Make ignite::ConstReference instance out of smart pointer.
Definition: reference.h:409
Reference< T > MakeReferenceFromCopy(const T &val)
Copy object and wrap it to make ignite::Reference instance.
Definition: reference.h:430
T * Get()
Dereference the pointer.
Definition: reference.h:343
Reference(const Reference< T2 > &other)
Copy constructor.
Definition: reference.h:244
ConstReference< T > MakeConstReferenceFromCopy(const T &val)
Copy object and wrap it to make ignite::ConstReference instance.
Definition: reference.h:447
ConstReference & operator=(const ConstReference< T2 > &other)
Assignment operator.
Definition: reference.h:132
bool IsNull() const
Check if the pointer is null.
Definition: reference.h:172
const T * Get() const
Dereference the pointer.
Definition: reference.h:162
bool IsNull() const
Check if the pointer is null.
Definition: reference.h:353
~ConstReference()
Destructor.
Definition: reference.h:149
Reference class.
Definition: reference.h:34
Reference & operator=(const Reference &other)
Assignment operator.
Definition: reference.h:260
Reference< T > MakeReferenceFromOwningPointer(T *val)
Make ignite::Reference instance out of pointer and pass its ownership.
Definition: reference.h:465
Constant Reference class.
Definition: reference.h:46
ConstReference(const ConstReference< T2 > &other)
Copy constructor.
Definition: reference.h:99
Reference(common::ReferenceImplBase *ptr, ptrdiff_t offset=0)
Constructor.
Definition: reference.h:217