summaryrefslogtreecommitdiff
path: root/libcult/examples/mm/transfer
diff options
context:
space:
mode:
Diffstat (limited to 'libcult/examples/mm/transfer')
-rw-r--r--libcult/examples/mm/transfer/makefile48
-rw-r--r--libcult/examples/mm/transfer/transfer.cxx117
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;
-}