You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by fi...@apache.org on 2011/09/23 18:06:29 UTC
svn commit: r1174856 - in
/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu:
include/capu/util/SmartPointer.h test/util/SmartPointerTest.cpp
Author: fitzner
Date: Fri Sep 23 16:06:29 2011
New Revision: 1174856
URL: http://svn.apache.org/viewvc?rev=1174856&view=rev
Log:
ETCH-149 Etch Utility Functions
Added dereference operator to SmartPointer implementation
Added Get function to retrieve the object stored by the SmartPointer
Change-Id: Ic09c53e691a37174edb2d91b27242dce1527a17b
Modified:
incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/util/SmartPointer.h
incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/util/SmartPointerTest.cpp
Modified: incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/util/SmartPointer.h
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/util/SmartPointer.h?rev=1174856&r1=1174855&r2=1174856&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/util/SmartPointer.h (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/include/capu/util/SmartPointer.h Fri Sep 23 16:06:29 2011
@@ -69,10 +69,15 @@ namespace capu {
T* operator->() const;
/**
- * Overload dereferencing operator to be able to get the object
- * referenced by the pointer
+ * Overload dereference operator to be able to get the object
+ * referenced by the pointer. Use with care!
*/
- //T& operator*() const;
+ T& operator*() const;
+
+ /**
+ * Returns theh object stored by the smartPointer
+ */
+ T* get() const;
/**
* Check if object exists
@@ -178,12 +183,12 @@ namespace capu {
return m_data;
}
- /*template<class T>
+ template<class T>
inline
T& SmartPointer<T>::operator*() const
{
return *m_data;
- }*/
+ }
template<class T>
inline
@@ -219,6 +224,13 @@ namespace capu {
template<class T>
inline
+ T* SmartPointer<T>::get() const
+ {
+ return m_data;
+ }
+
+ template<class T>
+ inline
SmartPointer<T>::operator bool()
{
return m_data != 0;
Modified: incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/util/SmartPointerTest.cpp
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/util/SmartPointerTest.cpp?rev=1174856&r1=1174855&r2=1174856&view=diff
==============================================================================
--- incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/util/SmartPointerTest.cpp (original)
+++ incubator/etch/trunk/binding-cpp/runtime/lib/capu/modules/capu/test/util/SmartPointerTest.cpp Fri Sep 23 16:06:29 2011
@@ -25,6 +25,7 @@ private:
FRIEND_TEST(SmartPointer,Constructors);
FRIEND_TEST(SmartPointer,Deconstructor);
FRIEND_TEST(SmartPointer,FileOperator);
+ FRIEND_TEST(SmartPointer,DereferencingOperator);
public:
static capu::int32_t mRefCount;
@@ -46,7 +47,7 @@ capu::int32_t DummyClass::mRefCount = 0;
-TEST(SmartPointer,Constructors) {
+TEST(SmartPointer,Constructors) {
{
capu::SmartPointer<DummyClass> ptr(new DummyClass());
EXPECT_EQ((capu::uint32_t)1,ptr.getRefCount());
@@ -63,10 +64,6 @@ TEST(SmartPointer,Constructors) {
EXPECT_EQ(0,DummyClass::mRefCount);
}
-TEST(SmartPointer,Deconstructor) {
-}
-
-
TEST(SmartPointer,AssignmentOperator) {
capu::SmartPointer<DummyClass> ptr = new DummyClass();
@@ -94,6 +91,21 @@ TEST(SmartPointer,FileOperator) {
EXPECT_EQ(13,ptr->mValue);
}
+TEST(SmartPointer,DereferencingOperator) {
+ DummyClass *dc = new DummyClass();
+ capu::SmartPointer<DummyClass> ptr(dc);
+ DummyClass *dc2 = &(*ptr);
+ EXPECT_EQ(dc,dc2);
+}
+
+TEST(SmartPointer,getObject) {
+ DummyClass *dc = new DummyClass();
+ capu::SmartPointer<DummyClass> ptr(dc);
+ DummyClass *dc2 = ptr.get();
+ EXPECT_TRUE(dc2 != NULL);
+ EXPECT_EQ(dc,dc2);
+}
+
TEST(SmartPointer,BoolOperator) {
capu::SmartPointer<DummyClass> ptr;
ptr = new DummyClass();