summaryrefslogtreecommitdiff
path: root/yapf/unittest/test_autocopyptr.h
diff options
context:
space:
mode:
authorKUDr <kudr@openttd.org>2006-05-27 16:12:16 +0000
committerKUDr <kudr@openttd.org>2006-05-27 16:12:16 +0000
commit5e73dce0e71791b87e5b096a890578eefcc26639 (patch)
treee4580db6e03032a997fce1392929b7190dc3b03d /yapf/unittest/test_autocopyptr.h
parent3d01010440440cfbffd1e5d3b0cf1f23f0503a76 (diff)
downloadopenttd-5e73dce0e71791b87e5b096a890578eefcc26639.tar.xz
(svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
Diffstat (limited to 'yapf/unittest/test_autocopyptr.h')
-rw-r--r--yapf/unittest/test_autocopyptr.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/yapf/unittest/test_autocopyptr.h b/yapf/unittest/test_autocopyptr.h
new file mode 100644
index 000000000..a08d84a59
--- /dev/null
+++ b/yapf/unittest/test_autocopyptr.h
@@ -0,0 +1,43 @@
+/* $Id$ */
+
+struct CData
+{
+ int val;
+
+ FORCEINLINE CData() : val(0) {NumInstances()++; /*DBG("DCata::ctor()\n");*/}
+ FORCEINLINE CData(const CData& src) : val(src.val) {NumInstances()++; /*DBG("DCata::ctor(%d)\n", val);*/}
+ FORCEINLINE ~CData() {NumInstances()--; /*DBG("DCata::dtor(%d)\n", val);*/}
+
+ FORCEINLINE bool operator < (const CData& other) const {return (val < other.val);}
+
+ FORCEINLINE static int& NumInstances() { static int num_instances = 0; return num_instances; };
+
+};
+
+typedef CAutoCopyPtrT<CData> PData;
+
+static int TestAutoCopyPtr(bool silent)
+{
+ int res = 0;
+ {
+ PData p1, p3;
+ p1->val = 4;
+ PData p2; p2 = p1;
+ p2->val = 6;
+ DBG("\n%d, %d", p1->val, p2->val);
+ CHECK_INT(0, p1->val, 4);
+ CHECK_INT(1, p2->val, 6);
+
+ p2 = p1;
+ p3 = p1;
+ p2->val = 7;
+ DBG("\n%d, %d", p1->val, p2->val);
+ CHECK_INT(2, p3->val, 4);
+ CHECK_INT(3, p2->val, 7);
+
+ CHECK_INT(4, CData::NumInstances(), 3);
+ }
+ CHECK_INT(5, CData::NumInstances(), 0);
+ return res;
+}
+