summaryrefslogtreecommitdiff
path: root/libcult/examples/mm/shptr/shptr.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libcult/examples/mm/shptr/shptr.cxx')
-rw-r--r--libcult/examples/mm/shptr/shptr.cxx73
1 files changed, 0 insertions, 73 deletions
diff --git a/libcult/examples/mm/shptr/shptr.cxx b/libcult/examples/mm/shptr/shptr.cxx
deleted file mode 100644
index cb026d4..0000000
--- a/libcult/examples/mm/shptr/shptr.cxx
+++ /dev/null
@@ -1,73 +0,0 @@
-// file : examples/mm/shptr/shptr.cxx
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2005-2010 Boris Kolpackov
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#include <cult/mm/shptr.hxx>
-#include <cult/mm/new.hxx> // MM::locate
-#include <cult/mm/counter.hxx> // MM::inc_ref
-
-#include <iostream>
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-using namespace MM;
-
-struct Foo
-{
- virtual ~Foo () {}
- char c;
-};
-
-struct Bar: virtual Foo {char c;};
-
-struct Baz: virtual Foo {char c;};
-
-struct Fox: Bar, Baz {};
-
-
-struct A
-{
- char c[8];
-};
-
-struct B
-{
- char c[8];
-};
-
-struct C : A, B
-{
- char c[8];
-};
-
-int
-main ()
-{
- {
- Baz* bp (new Fox);
- Foo* fp (bp);
-
- Counter* cp (locate (fp, *counted));
-
- inc_ref (bp);
-
- cp->dec_ref ();
-
- if (cp->dec_ref ()) cerr << "good: destroying" << endl;
- else cerr << "bad: leaking" << endl;
-
- delete bp;
- }
-
- {
- Shptr<Fox> pfox (new Fox);
- Shptr<Bar> pbar (pfox);
-
- Shptr<Foo> pfoo;
-
- pfoo = pbar;
- }
-}