diff options
Diffstat (limited to 'libcult/examples/mm/transfer')
-rw-r--r-- | libcult/examples/mm/transfer/makefile | 48 | ||||
-rw-r--r-- | libcult/examples/mm/transfer/transfer.cxx | 117 |
2 files changed, 0 insertions, 165 deletions
diff --git a/libcult/examples/mm/transfer/makefile b/libcult/examples/mm/transfer/makefile deleted file mode 100644 index 3380f10..0000000 --- a/libcult/examples/mm/transfer/makefile +++ /dev/null @@ -1,48 +0,0 @@ -# file : examples/mm/transfer/makefile -# author : Boris Kolpackov <boris@kolpackov.net> -# copyright : Copyright (c) 2005-2010 Boris Kolpackov -# license : GNU GPL v2; see accompanying LICENSE file - -include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make - -cxx_tun := transfer.cxx -cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) -cxx_od := $(cxx_obj:.o=.o.d) - -cult.l := $(out_root)/cult/cult.l -cult.l.cpp-options := $(out_root)/cult/cult.l.cpp-options - -transfer := $(out_base)/transfer -clean := $(out_base)/.clean - - -# Build. -# -$(transfer): $(cxx_obj) $(cult.l) - -$(cxx_obj) $(cxx_od): $(cult.l.cpp-options) - -$(call include-dep,$(cxx_od)) - - -# Convenience alias for default target. -# -$(out_base)/: $(transfer) - - -# Clean. -# -$(clean): $(transfer).o.clean \ - $(addsuffix .cxx.clean,$(cxx_obj)) \ - $(addsuffix .cxx.clean,$(cxx_od)) - - -# How to. -# -$(call include,$(bld_root)/cxx/o-e.make) -$(call include,$(bld_root)/cxx/cxx-o.make) -$(call include,$(bld_root)/cxx/cxx-d.make) - -# Dependencies. -# -$(call import,$(src_root)/cult/makefile) diff --git a/libcult/examples/mm/transfer/transfer.cxx b/libcult/examples/mm/transfer/transfer.cxx deleted file mode 100644 index 81014d0..0000000 --- a/libcult/examples/mm/transfer/transfer.cxx +++ /dev/null @@ -1,117 +0,0 @@ -// file : examples/mm/transfer/transfer.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/evptr.hxx> - -#include <iostream> - -using std::cerr; -using std::endl; - -using namespace Cult; - -unsigned long count = 0; -unsigned long clone_count = 0; - -struct Type -{ - Type () - { - ++count; - } - - ~Type () - { - --count; - } - - Evptr<Type> - clone () const - { - ++clone_count; - return Evptr<Type> (new Type); - } - - Void - f () const - { - Int i = i_; - ++i; - } - - Int i_; -}; - - -Evptr<Type> -source () -{ - return Evptr<Type> (new Type); -} - -Void -sink (Evptr<Type> a, Boolean r = true) -{ - if (r) - { - sink (a, false); - } - else - { - Evptr<Type> b (a); - - cerr << "\tshare count: " << b.count () << endl; - - // Any of these will trigger cloning. - // - b->f (); - } -} - -Int -main () -{ - // case 1 - // - { - cerr << "sink (new type)" << endl; - - clone_count = 0; - sink (new Type); - - cerr << "\tclone count: " << clone_count << endl - << endl; - } - - // case 2 - // - { - cerr << "sink (source ())" << endl; - - clone_count = 0; - sink (source ()); - - cerr << "\tclone count: " << clone_count << endl - << endl; - } - - - // case 3 - // - { - cerr << "sink (p)" << endl; - - clone_count = 0; - - Evptr<Type> p (new Type); - sink (p); - - cerr << "\tclone count: " << clone_count << endl - << endl; - } - - - cerr << "balance: " << count << endl; -} |