summaryrefslogtreecommitdiff
path: root/libcult/examples
diff options
context:
space:
mode:
Diffstat (limited to 'libcult/examples')
-rw-r--r--libcult/examples/cli/cli.cxx65
-rw-r--r--libcult/examples/cli/makefile48
-rw-r--r--libcult/examples/dr/xdr/makefile49
-rw-r--r--libcult/examples/dr/xdr/xdr.cxx87
-rw-r--r--libcult/examples/makefile36
-rw-r--r--libcult/examples/mm/shptr/makefile48
-rw-r--r--libcult/examples/mm/shptr/shptr.cxx73
-rw-r--r--libcult/examples/mm/transfer/makefile48
-rw-r--r--libcult/examples/mm/transfer/transfer.cxx117
-rw-r--r--libcult/examples/os/net/ipv4/datagram/client.cxx66
-rw-r--r--libcult/examples/os/net/ipv4/datagram/makefile55
-rw-r--r--libcult/examples/os/net/ipv4/datagram/protocol.hxx20
-rw-r--r--libcult/examples/os/net/ipv4/datagram/server.cxx123
-rw-r--r--libcult/examples/os/net/ipv4/multicast/client.cxx66
-rw-r--r--libcult/examples/os/net/ipv4/multicast/makefile55
-rw-r--r--libcult/examples/os/net/ipv4/multicast/protocol.hxx20
-rw-r--r--libcult/examples/os/net/ipv4/multicast/server.cxx134
-rw-r--r--libcult/examples/sched/cancel/cancel.cxx63
-rw-r--r--libcult/examples/sched/cancel/makefile48
-rw-r--r--libcult/examples/sched/main/main.cxx43
-rw-r--r--libcult/examples/sched/main/makefile48
-rw-r--r--libcult/examples/trace/makefile48
-rw-r--r--libcult/examples/trace/trace.cxx51
23 files changed, 0 insertions, 1411 deletions
diff --git a/libcult/examples/cli/cli.cxx b/libcult/examples/cli/cli.cxx
deleted file mode 100644
index 922a23d..0000000
--- a/libcult/examples/cli/cli.cxx
+++ /dev/null
@@ -1,65 +0,0 @@
-// file : examples/cli/cli.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/types.hxx>
-
-#include <cult/cli/options.hxx>
-#include <cult/cli/options-spec.hxx>
-#include <cult/cli/options-parser.hxx>
-
-#include <iostream>
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-
-namespace
-{
- extern Char const help[] = "help";
- extern Char const version[] = "version";
- extern Char const outdir[] = "outdir";
-}
-
-typedef
-CLI::Options<help, Boolean,
- version, Boolean,
- outdir, String>
-Options;
-
-Int
-main (Int argc, Char* argv[])
-{
- try
- {
- Options options (CLI::parse<Options> (argc, argv));
-
- if (options.value<help> ())
- {
- cerr << "usage: " << argv[0] << " [--help] [--version] [--outdir <dir>]"
- << endl;
- return 0;
- }
-
- if (options.value<version> ())
- {
- cerr << argv[0] << " 1.2.3" << endl;
- return 0;
- }
-
- if (String dir = options.value<outdir> ())
- {
- cerr << "outdir: " << dir << endl;
- }
- }
- catch (CLI::UnexpectedOption const& e)
- {
- cerr << "unexpected option " << e.option () <<endl;
- }
- catch (CLI::OptionFormat const& e)
- {
- cerr << "bad format for " << e.option () << endl;
- }
-}
diff --git a/libcult/examples/cli/makefile b/libcult/examples/cli/makefile
deleted file mode 100644
index 004f135..0000000
--- a/libcult/examples/cli/makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : examples/cli/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 := cli.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
-
-cli := $(out_base)/cli
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(cli): $(cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(cli)
-
-
-# Clean.
-#
-$(clean): $(cli).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/dr/xdr/makefile b/libcult/examples/dr/xdr/makefile
deleted file mode 100644
index 6a4fa8f..0000000
--- a/libcult/examples/dr/xdr/makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# file : examples/dr/xdr/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 := xdr.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
-
-xdr := $(out_base)/xdr
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(xdr): $(cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(xdr)
-
-
-# Clean.
-#
-$(clean): $(xdr).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/dr/xdr/xdr.cxx b/libcult/examples/dr/xdr/xdr.cxx
deleted file mode 100644
index 38e948d..0000000
--- a/libcult/examples/dr/xdr/xdr.cxx
+++ /dev/null
@@ -1,87 +0,0 @@
-// file : examples/dr/xdr/xdr.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/types.hxx>
-
-#include <cult/dr/xdr/input-stream.hxx>
-#include <cult/dr/xdr/output-stream.hxx>
-
-#include <iostream>
-
-using namespace Cult;
-using namespace DR::XDR;
-
-using std::cerr;
-using std::endl;
-
-Int
-main ()
-{
- try
- {
- OutputStream o (8);
-
- o << true << false;
-
- UnsignedInt8 a8 (0xDE);
- UnsignedInt16 a16 (0xDEAD);
- UnsignedInt32 a32 (0xDEADBEEF);
- UnsignedInt64 a64 (0xDEADBEEFDEADBEEFULL);
-
- o << a8 << a16 << a32 << a64;
-
- Int8 b8 (-8);
- Int16 b16 (-16);
- Int32 b32 (-32);
- Int64 b64 (-64);
-
- o << b8 << b16 << b32 << b64;
-
- String s ("reasonably loooooooooooooong string with some junk in it");
-
- o << s;
-
- InputStream i (o.buffer ());
-
- Boolean t, f;
- String s1;
-
- i >> t >> f;
- i >> a8 >> a16 >> a32 >> a64;
- i >> b8 >> b16 >> b32 >> b64;
- i >> s1;
-
- if (!t
- || f
- || a8 != 0xDE
- || a16 != 0xDEAD
- || a32 != 0xDEADBEEF
- || a64 != 0xDEADBEEFDEADBEEFULL
- || b8 != -8
- || b16 != -16
- || b32 != -32
- || b64 != -64
- || s1 != s) return 1;
-
- try
- {
- i >> t;
- }
- catch (Extraction const&)
- {
- return 0;
- }
- }
- catch (Insertion const&)
- {
- cerr << "insertion" << endl;
- }
- catch (Extraction const&)
- {
- cerr << "extraction" << endl;
- }
-
- return 1;
-}
diff --git a/libcult/examples/makefile b/libcult/examples/makefile
deleted file mode 100644
index d264910..0000000
--- a/libcult/examples/makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# file : examples/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
-include $(scf_root)/configuration.make
-
-default := $(out_base)/
-clean := $(out_base)/.clean
-
-examples := $(out_base)/cli \
- $(out_base)/mm/shptr \
- $(out_base)/mm/transfer \
- $(out_base)/trace
-
-ifeq ($(cult_threads),y)
-examples += $(out_base)/sched/main \
- $(out_base)/sched/cancel
-endif
-
-
-ifeq ($(cult_network),y)
-examples += $(out_base)/os/net/ipv4/datagram \
- $(out_base)/os/net/ipv4/multicast
-endif
-
-ifeq ($(cult_dr),y)
-examples += $(out_base)/dr/xdr
-endif
-
-
-$(default): $(addsuffix /,$(examples))
-$(clean): $(addsuffix /.clean,$(examples))
-
-$(foreach e,$(subst $(out_base),$(src_base),$(examples)),$(call import,$e/makefile))
diff --git a/libcult/examples/mm/shptr/makefile b/libcult/examples/mm/shptr/makefile
deleted file mode 100644
index 2bf1598..0000000
--- a/libcult/examples/mm/shptr/makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : examples/mm/shptr/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 := shptr.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
-
-shptr := $(out_base)/shptr
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(shptr): $(cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(shptr)
-
-
-# Clean.
-#
-$(clean): $(shptr).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/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;
- }
-}
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;
-}
diff --git a/libcult/examples/os/net/ipv4/datagram/client.cxx b/libcult/examples/os/net/ipv4/datagram/client.cxx
deleted file mode 100644
index 863fc25..0000000
--- a/libcult/examples/os/net/ipv4/datagram/client.cxx
+++ /dev/null
@@ -1,66 +0,0 @@
-// file : examples/os/net/ipv4/datagram/client.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/types.hxx>
-
-#include <cult/os/net/ipv4/address.hxx>
-#include <cult/os/net/ipv4/datagram-socket.hxx>
-
-#include <iostream>
-#include <unistd.h> // usleep
-
-#include "protocol.hxx"
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-using namespace OS::Net::IPv4;
-
-class Args {};
-
-Int
-main (Int argc, Char* argv[])
-{
- try
- {
- if (argc < 2)
- throw Args ();
-
- Address addr (argv[1], 10000);
-
- DatagramSocket socket;
-
- Message msg;
- msg.sn = 0;
-
- cerr << "message size : " << sizeof (msg) << " bytes" << endl;
- cerr << "send buffer : " << socket.send_buffer_size () << " bytes" << endl;
-
- for (Index i = 0; i < payload_size; i++)
- {
- msg.payload[i] = i;
- }
-
- for (; msg.sn < message_count; msg.sn++)
- {
- socket.send (&msg, sizeof (msg), addr);
-
- // ::usleep (10);
- }
-
- return 0;
- }
- catch (OS::Exception const& e)
- {
- cerr << "errno: " << strerror (e.code ()) << endl;
- }
- catch (Args const&)
- {
- cerr << "usage: client <IPv4 address>" << endl;
- }
-
- return 1;
-}
diff --git a/libcult/examples/os/net/ipv4/datagram/makefile b/libcult/examples/os/net/ipv4/datagram/makefile
deleted file mode 100644
index 2dc8e1b..0000000
--- a/libcult/examples/os/net/ipv4/datagram/makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# file : examples/os/net/ipv4/datagram/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
-
-client_cxx_tun := client.cxx
-server_cxx_tun := server.cxx
-
-client_cxx_obj := $(addprefix $(out_base)/,$(client_cxx_tun:.cxx=.o))
-server_cxx_obj := $(addprefix $(out_base)/,$(server_cxx_tun:.cxx=.o))
-
-cxx_obj := $(client_cxx_obj) $(server_cxx_obj)
-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
-
-client := $(out_base)/client
-server := $(out_base)/server
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(client) $(server)
-
-# Build.
-#
-
-$(client): $(client_cxx_obj) $(cult.l)
-$(server): $(server_cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Clean.
-#
-$(clean): $(client).o.clean \
- $(server).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/os/net/ipv4/datagram/protocol.hxx b/libcult/examples/os/net/ipv4/datagram/protocol.hxx
deleted file mode 100644
index 0f418e8..0000000
--- a/libcult/examples/os/net/ipv4/datagram/protocol.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : examples/os/net/ipv4/datagram/protocol.hxx
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2005-2010 Boris Kolpackov
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef PROTOCOL_HXX
-#define PROTOCOL_HXX
-
-#include <cult/types.hxx>
-
-Cult::UnsignedShort const payload_size = 256;
-Cult::UnsignedLong const message_count = 100;
-
-struct Message
-{
- Cult::UnsignedLong sn;
- Cult::UnsignedShort payload[payload_size];
-};
-
-#endif // PROTOCOL_HXX
diff --git a/libcult/examples/os/net/ipv4/datagram/server.cxx b/libcult/examples/os/net/ipv4/datagram/server.cxx
deleted file mode 100644
index e788056..0000000
--- a/libcult/examples/os/net/ipv4/datagram/server.cxx
+++ /dev/null
@@ -1,123 +0,0 @@
-// file : examples/os/net/ipv4/datagram/server.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/types.hxx>
-#include <cult/containers/vector.hxx>
-
-#include <cult/os/net/ipv4/address.hxx>
-#include <cult/os/net/ipv4/datagram-socket.hxx>
-
-#include <iostream>
-#include <cstring> // memcmp
-
-#include "protocol.hxx"
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-using namespace OS::Net::IPv4;
-
-typedef Containers::Vector<Boolean> StatusList;
-
-Int
-main ()
-{
- try
- {
- Address addr (INADDR_ANY, 10000);
-
- DatagramSocket socket (addr);
-
- Message expected_msg;
- expected_msg.sn = 0;
-
- for (UnsignedShort i = 0; i < payload_size; ++i)
- {
- expected_msg.payload[i] = i;
- }
-
- StatusList received (message_count, 0);
- StatusList damaged (message_count, 0);
- StatusList duplicate (message_count, 0);
-
- Message msg;
-
- while (true)
- {
- socket.recv (&msg, sizeof (msg));
-
- if (received[msg.sn])
- {
- duplicate[msg.sn] = true;
- }
- else
- {
- received[msg.sn] = true;
-
- if (std::memcmp (expected_msg.payload, msg.payload, payload_size) != 0)
- {
- damaged[msg.sn] = true;
- }
- }
-
- if (msg.sn + 1 == message_count) break;
- }
-
- UnsignedLong lost_count (0), damaged_count (0), duplicate_count (0);
-
- for (StatusList::Iterator i (received.begin ()), end (received.end ());
- i != end;
- ++i)
- if (!*i) ++lost_count;
-
- for (StatusList::Iterator i (damaged.begin ()), end (damaged.end ());
- i != end;
- ++i)
- if (*i) ++damaged_count;
-
- for (StatusList::Iterator i (duplicate.begin ()), end (duplicate.end ());
- i != end;
- ++i)
- if (*i) ++duplicate_count;
-
- cerr << "lost : " << lost_count << endl
- << "damaged : " << damaged_count << endl
- << "duplicate : " << duplicate_count << endl << endl;
-
- if (lost_count != 0)
- {
- cerr << "lost message dump:" << endl;
-
- UnsignedLong total = 0;
-
- for (StatusList::Iterator
- begin (received.begin ()), i (begin), end (received.end ());
- i != end;)
- {
- if (!*i)
- {
- UnsignedLong count = 1;
-
- for (StatusList::Iterator j = i + 1; j < end && !*j; j++, count++) ;
-
- cerr << '\t' << i - begin << " : " << count << endl;
-
- i += count;
- total += count;
- }
- else
- ++i;
- }
-
- if (total != lost_count)
- cerr << "trouble" << endl;
- }
- }
- catch (OS::Exception const& e)
- {
- cerr << "errno: " << e.code () << endl;
- }
-}
diff --git a/libcult/examples/os/net/ipv4/multicast/client.cxx b/libcult/examples/os/net/ipv4/multicast/client.cxx
deleted file mode 100644
index 863fc25..0000000
--- a/libcult/examples/os/net/ipv4/multicast/client.cxx
+++ /dev/null
@@ -1,66 +0,0 @@
-// file : examples/os/net/ipv4/datagram/client.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/types.hxx>
-
-#include <cult/os/net/ipv4/address.hxx>
-#include <cult/os/net/ipv4/datagram-socket.hxx>
-
-#include <iostream>
-#include <unistd.h> // usleep
-
-#include "protocol.hxx"
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-using namespace OS::Net::IPv4;
-
-class Args {};
-
-Int
-main (Int argc, Char* argv[])
-{
- try
- {
- if (argc < 2)
- throw Args ();
-
- Address addr (argv[1], 10000);
-
- DatagramSocket socket;
-
- Message msg;
- msg.sn = 0;
-
- cerr << "message size : " << sizeof (msg) << " bytes" << endl;
- cerr << "send buffer : " << socket.send_buffer_size () << " bytes" << endl;
-
- for (Index i = 0; i < payload_size; i++)
- {
- msg.payload[i] = i;
- }
-
- for (; msg.sn < message_count; msg.sn++)
- {
- socket.send (&msg, sizeof (msg), addr);
-
- // ::usleep (10);
- }
-
- return 0;
- }
- catch (OS::Exception const& e)
- {
- cerr << "errno: " << strerror (e.code ()) << endl;
- }
- catch (Args const&)
- {
- cerr << "usage: client <IPv4 address>" << endl;
- }
-
- return 1;
-}
diff --git a/libcult/examples/os/net/ipv4/multicast/makefile b/libcult/examples/os/net/ipv4/multicast/makefile
deleted file mode 100644
index cb35bf6..0000000
--- a/libcult/examples/os/net/ipv4/multicast/makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# file : examples/os/net/ipv4/multicast/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
-
-client_cxx_tun := client.cxx
-server_cxx_tun := server.cxx
-
-client_cxx_obj := $(addprefix $(out_base)/,$(client_cxx_tun:.cxx=.o))
-server_cxx_obj := $(addprefix $(out_base)/,$(server_cxx_tun:.cxx=.o))
-
-cxx_obj := $(client_cxx_obj) $(server_cxx_obj)
-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
-
-client := $(out_base)/client
-server := $(out_base)/server
-clean := $(out_base)/.clean
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(client) $(server)
-
-# Build.
-#
-
-$(client): $(client_cxx_obj) $(cult.l)
-$(server): $(server_cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Clean.
-#
-$(clean): $(client).o.clean \
- $(server).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/os/net/ipv4/multicast/protocol.hxx b/libcult/examples/os/net/ipv4/multicast/protocol.hxx
deleted file mode 100644
index a4057de..0000000
--- a/libcult/examples/os/net/ipv4/multicast/protocol.hxx
+++ /dev/null
@@ -1,20 +0,0 @@
-// file : examples/os/net/ipv4/multicast/protocol.hxx
-// author : Boris Kolpackov <boris@kolpackov.net>
-// copyright : Copyright (c) 2005-2010 Boris Kolpackov
-// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-
-#ifndef PROTOCOL_HXX
-#define PROTOCOL_HXX
-
-#include <cult/types.hxx>
-
-Cult::UnsignedShort const payload_size = 256;
-Cult::UnsignedLong const message_count = 100;
-
-struct Message
-{
- Cult::UnsignedLong sn;
- Cult::UnsignedShort payload[payload_size];
-};
-
-#endif // PROTOCOL_HXX
diff --git a/libcult/examples/os/net/ipv4/multicast/server.cxx b/libcult/examples/os/net/ipv4/multicast/server.cxx
deleted file mode 100644
index 5d8fe99..0000000
--- a/libcult/examples/os/net/ipv4/multicast/server.cxx
+++ /dev/null
@@ -1,134 +0,0 @@
-// file : examples/os/net/ipv4/datagram/server.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/types.hxx>
-#include <cult/containers/vector.hxx>
-
-#include <cult/os/net/ipv4/address.hxx>
-#include <cult/os/net/ipv4/multicast-socket.hxx>
-
-#include <iostream>
-#include <cstring> // memcmp
-
-#include "protocol.hxx"
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-using namespace OS::Net::IPv4;
-
-typedef Containers::Vector<Boolean> StatusList;
-
-class Args {};
-
-Int
-main (Int argc, Char* argv[])
-{
- try
- {
- if (argc < 2)
- throw Args ();
-
- Address addr (argv[1], 10000);
-
- MulticastSocket socket;
-
- socket.join (addr);
-
- Message expected_msg;
- expected_msg.sn = 0;
-
- for (UnsignedShort i = 0; i < payload_size; ++i)
- {
- expected_msg.payload[i] = i;
- }
-
- StatusList received (message_count, 0);
- StatusList damaged (message_count, 0);
- StatusList duplicate (message_count, 0);
-
- Message msg;
-
- while (true)
- {
- socket.recv (&msg, sizeof (msg));
-
- if (received[msg.sn])
- {
- duplicate[msg.sn] = true;
- }
- else
- {
- received[msg.sn] = true;
-
- if (std::memcmp (expected_msg.payload, msg.payload, payload_size) != 0)
- {
- damaged[msg.sn] = true;
- }
- }
-
- if (msg.sn + 1 == message_count) break;
- }
-
- UnsignedLong lost_count (0), damaged_count (0), duplicate_count (0);
-
- for (StatusList::Iterator i (received.begin ()), end (received.end ());
- i != end;
- ++i)
- if (!*i) ++lost_count;
-
- for (StatusList::Iterator i (damaged.begin ()), end (damaged.end ());
- i != end;
- ++i)
- if (*i) ++damaged_count;
-
- for (StatusList::Iterator i (duplicate.begin ()), end (duplicate.end ());
- i != end;
- ++i)
- if (*i) ++duplicate_count;
-
- cerr << "lost : " << lost_count << endl
- << "damaged : " << damaged_count << endl
- << "duplicate : " << duplicate_count << endl << endl;
-
- if (lost_count != 0)
- {
- cerr << "lost message dump:" << endl;
-
- UnsignedLong total = 0;
-
- for (StatusList::Iterator
- begin (received.begin ()), i (begin), end (received.end ());
- i != end;)
- {
- if (!*i)
- {
- UnsignedLong count = 1;
-
- for (StatusList::Iterator j = i + 1; j < end && !*j; j++, count++) ;
-
- cerr << '\t' << i - begin << " : " << count << endl;
-
- i += count;
- total += count;
- }
- else
- ++i;
- }
-
- if (total != lost_count)
- cerr << "trouble" << endl;
- }
- }
- catch (OS::Exception const& e)
- {
- cerr << "errno: " << e.code () << endl;
- }
- catch (Args const&)
- {
- cerr << "usage: client <IPv4 address>" << endl;
- }
-}
diff --git a/libcult/examples/sched/cancel/cancel.cxx b/libcult/examples/sched/cancel/cancel.cxx
deleted file mode 100644
index ee71449..0000000
--- a/libcult/examples/sched/cancel/cancel.cxx
+++ /dev/null
@@ -1,63 +0,0 @@
-// file : examples/sched/cancel/cancel.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/types.hxx>
-
-#include <cult/mm/shptr.hxx>
-
-#include <cult/sched/lock.hxx>
-#include <cult/sched/mutex.hxx>
-#include <cult/sched/thread.hxx>
-#include <cult/sched/condition.hxx>
-
-
-#include <iostream>
-#include <unistd.h> // sleep
-
-using std::cerr;
-using std::endl;
-
-using namespace Cult;
-using namespace Sched;
-
-Void*
-cond_wait_thread_proc (Void*)
-{
- try
- {
- Mutex mutex;
- Condition cond (mutex);
-
- Lock lock (mutex);
-
- cond.wait ();
- }
- /*
- catch (std::thread_canceled const& e)
- {
- cerr << "caught thread_canceled" << endl;
- throw;
- }
- */
- catch (...)
- {
- cerr << "presumably caught thread_canceled" << endl;
- throw;
- }
-
- return 0;
-}
-
-
-Int
-main ()
-{
- Shptr<Thread> thread (new Thread (cond_wait_thread_proc));
-
- sleep (1);
-
- thread->cancel ();
- thread->join ();
-}
diff --git a/libcult/examples/sched/cancel/makefile b/libcult/examples/sched/cancel/makefile
deleted file mode 100644
index 38a96bd..0000000
--- a/libcult/examples/sched/cancel/makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : examples/sched/cancel/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 := cancel.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
-
-cancel := $(out_base)/cancel
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(cancel): $(cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(cancel)
-
-
-# clean
-#
-$(clean): $(cancel).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/sched/main/main.cxx b/libcult/examples/sched/main/main.cxx
deleted file mode 100644
index 58cc2cc..0000000
--- a/libcult/examples/sched/main/main.cxx
+++ /dev/null
@@ -1,43 +0,0 @@
-// file : examples/sched/main/main.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/types.hxx>
-
-#include <cult/mm/shptr.hxx>
-#include <cult/sched/thread.hxx>
-
-#include <iostream>
-#include <unistd.h> // sleep
-
-using namespace Cult;
-using namespace Sched;
-
-using std::cerr;
-using std::endl;
-
-Void*
-thread_func (Void*)
-{
- cerr << "second thread: going to sleep for a few seconds" << endl;
-
- sleep (2);
-
- cerr << "second thread: woke up, now exiting" << endl;
-
- return 0;
-}
-
-
-Int
-main ()
-{
- Shptr<Thread> self (new Thread);
-
- Shptr<Thread> other (new Thread (thread_func));
-
- cerr << "initial thread: exiting" << endl;
-
- Thread::exit (0);
-}
diff --git a/libcult/examples/sched/main/makefile b/libcult/examples/sched/main/makefile
deleted file mode 100644
index 945237f..0000000
--- a/libcult/examples/sched/main/makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : examples/sched/main/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 := main.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
-
-main := $(out_base)/main
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(main): $(cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(main)
-
-
-# Clean.
-#
-$(clean): $(main).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/trace/makefile b/libcult/examples/trace/makefile
deleted file mode 100644
index 57e2b7b..0000000
--- a/libcult/examples/trace/makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : examples/trace/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 := trace.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
-
-trace := $(out_base)/trace
-clean := $(out_base)/.clean
-
-
-# Build.
-#
-$(trace): $(cxx_obj) $(cult.l)
-
-$(cxx_obj) $(cxx_od): $(cult.l.cpp-options)
-
-$(call include-dep,$(cxx_od))
-
-
-# Convenience alias for default target.
-#
-$(out_base)/: $(trace)
-
-
-# Clean.
-#
-$(clean): $(trace).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/trace/trace.cxx b/libcult/examples/trace/trace.cxx
deleted file mode 100644
index e2a09d4..0000000
--- a/libcult/examples/trace/trace.cxx
+++ /dev/null
@@ -1,51 +0,0 @@
-// file : examples/trace/trace.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/types.hxx>
-
-#include <cult/trace/log.hxx>
-#include <cult/trace/record.hxx>
-#include <cult/trace/stream.hxx>
-
-#include <ostream>
-
-using namespace Cult;
-
-struct Foo {};
-
-std::ostream&
-operator<< (std::ostream& o, Foo const&)
-{
- return o << "::Foo";
-}
-
-Trace::Stream tout ("Examples::Trace", 4);
-
-Int
-main ()
-{
- using Trace::Record;
-
- Trace::Log::instance ().level (9);
-
- Record a ("main", 2);
- a << "notationally burdensome";
- tout << a;
-
- Record b ("main", 2);
- tout << (b << "a bit better, but still burdensome");
-
- tout << (Record ("main", 2) << "this is"
- << " somewhat"
- << " twisted but nice to be able to");
-
- tout << "concise, using default level";
-
- tout << 9 << "concise, using custom level";
-
- Foo f;
-
- tout << 3 << f << " " << 5;
-}