diff options
Diffstat (limited to 'libcult/examples')
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; -} |