aboutsummaryrefslogtreecommitdiffstats
path: root/libtests/pointer_holder.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2008-04-29 14:55:25 +0200
committerJay Berkenbilt <ejb@ql.org>2008-04-29 14:55:25 +0200
commit9a0b88bf7777c153dc46ace22db74ef24d51583a (patch)
treef567ac1cf2bf5071a611eb49323a935b6ac938ff /libtests/pointer_holder.cc
downloadqpdf-9a0b88bf7777c153dc46ace22db74ef24d51583a.tar.zst
update release date to actual daterelease-qpdf-2.0
git-svn-id: svn+q:///qpdf/trunk@599 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libtests/pointer_holder.cc')
-rw-r--r--libtests/pointer_holder.cc81
1 files changed, 81 insertions, 0 deletions
diff --git a/libtests/pointer_holder.cc b/libtests/pointer_holder.cc
new file mode 100644
index 00000000..9176df17
--- /dev/null
+++ b/libtests/pointer_holder.cc
@@ -0,0 +1,81 @@
+
+#include <qpdf/PointerHolder.hh>
+
+#include <iostream>
+#include <stdlib.h>
+#include <list>
+
+#include <qpdf/QUtil.hh>
+
+class Object
+{
+ public:
+ Object();
+ ~Object();
+ void hello();
+
+ private:
+ static int next_id;
+ int id;
+};
+
+
+int Object::next_id = 0;
+
+Object::Object()
+{
+ this->id = ++next_id;
+ std::cout << "created Object, id " << this->id << std::endl;
+}
+
+Object::~Object()
+{
+ std::cout << "destroyed Object, id " << this->id << std::endl;
+}
+
+void
+Object::hello()
+{
+ std::cout << "calling Object::hello for " << this->id << std::endl;
+}
+
+typedef PointerHolder<Object> ObjectHolder;
+
+int main(int argc, char* argv[])
+{
+ std::list<ObjectHolder> ol1;
+
+ ObjectHolder oh0;
+ {
+ std::cout << "hello" << std::endl;
+ Object* o1 = new Object;
+ ObjectHolder oh1(o1);
+ ObjectHolder oh2(oh1);
+ ObjectHolder oh3(new Object);
+ ObjectHolder oh4;
+ ObjectHolder oh5;
+ if (oh4 == oh5)
+ {
+ std::cout << "nulls equal" << std::endl;
+ }
+ oh3 = oh1;
+ oh4 = oh2;
+ if (oh3 == oh4)
+ {
+ std::cout << "equal okay" << std::endl;
+ }
+ if ((! (oh3 < oh4)) && (! (oh4 < oh3)))
+ {
+ std::cout << "less than okay" << std::endl;
+ }
+ ol1.push_back(oh3);
+ ol1.push_back(oh3);
+ Object* o3 = new Object;
+ oh0 = o3;
+ }
+
+ ol1.front().getPointer()->hello();
+ ol1.pop_front();
+ std::cout << "goodbye" << std::endl;
+ return 0;
+}