summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-02-12 13:10:38 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-02-12 13:10:38 +0000
commit1c46a26ae6cc823b265dfd1b287c7cac436cfb4c (patch)
tree6c6ba34daae909812ecb7721569aa8050e48d45f
parent5547b3a5eda5b3fbb322b95c30cc40944553b9ec (diff)
2009-02-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added operator T* * src/array_fun.h * test/array_funTest.cc
-rw-r--r--ChangeLog6
-rw-r--r--src/array_fun.h10
-rw-r--r--test/array_funTest.cc7
3 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5fb272d8..479f93c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2009-02-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
+ Added operator T*
+ * src/array_fun.h
+ * test/array_funTest.cc
+
+2009-02-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
+
Use dynamically allocated char array to detect memory access
violation.
* src/DHTRoutingTableDeserializer.cc
diff --git a/src/array_fun.h b/src/array_fun.h
index 0c2327f4..157456fb 100644
--- a/src/array_fun.h
+++ b/src/array_fun.h
@@ -250,6 +250,16 @@ public:
{
return _array[index];
}
+
+ operator T*()
+ {
+ return _array;
+ }
+
+ operator const T*() const
+ {
+ return _array;
+ }
};
} // namespace aria2
diff --git a/test/array_funTest.cc b/test/array_funTest.cc
index 19cf2bfc..6e474fcc 100644
--- a/test/array_funTest.cc
+++ b/test/array_funTest.cc
@@ -92,6 +92,10 @@ static void arrayPtrConst(const array_ptr<struct array_funTest::X>& ax)
CPPUNIT_ASSERT_EQUAL(99, ax[2].m);
}
+static void arrayPtrCast(struct array_funTest::X* x) {}
+
+static void arrayPtrConstCast(const struct array_funTest::X* x) {}
+
void array_funTest::testArrayPtr()
{
array_ptr<struct X> ax(new struct X[10]);
@@ -100,6 +104,9 @@ void array_funTest::testArrayPtr()
CPPUNIT_ASSERT_EQUAL(100, ax[3].m);
CPPUNIT_ASSERT_EQUAL(99, ax[2].m);
arrayPtrConst(ax);
+
+ arrayPtrCast(ax);
+ arrayPtrConstCast(ax);
}
} // namespace aria2