Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r76116 - in trunk/libs/interprocess: doc example test
From: igaztanaga_at_[hidden]
Date: 2011-12-23 08:23:31


Author: igaztanaga
Date: 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
New Revision: 76116
URL: http://svn.boost.org/trac/boost/changeset/76116

Log:
Bug 5326
Text files modified:
   trunk/libs/interprocess/doc/interprocess.qbk | 10 ++++++++++
   trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp | 3 +++
   trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp | 3 +++
   trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp | 3 +++
   trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp | 3 +++
   trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp | 3 +++
   trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp | 3 +++
   trunk/libs/interprocess/example/doc_adaptive_pool.cpp | 3 +++
   trunk/libs/interprocess/example/doc_allocator.cpp | 3 +++
   trunk/libs/interprocess/example/doc_bufferstream.cpp | 3 +++
   trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp | 3 +++
   trunk/libs/interprocess/example/doc_cached_node_allocator.cpp | 3 +++
   trunk/libs/interprocess/example/doc_complex_map.cpp | 3 +++
   trunk/libs/interprocess/example/doc_cont.cpp | 3 +++
   trunk/libs/interprocess/example/doc_intrusive.cpp | 3 +++
   trunk/libs/interprocess/example/doc_ipc_message.cpp | 3 +++
   trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp | 3 +++
   trunk/libs/interprocess/example/doc_managed_allocation_command.cpp | 3 +++
   trunk/libs/interprocess/example/doc_managed_construction_info.cpp | 3 +++
   trunk/libs/interprocess/example/doc_managed_grow.cpp | 3 +++
   trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp | 3 +++
   trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp | 3 +++
   trunk/libs/interprocess/example/doc_map.cpp | 3 +++
   trunk/libs/interprocess/example/doc_move_containers.cpp | 3 +++
   trunk/libs/interprocess/example/doc_multi_index.cpp | 3 +++
   trunk/libs/interprocess/example/doc_named_alloc.cpp | 3 +++
   trunk/libs/interprocess/example/doc_named_mutex.cpp | 3 +++
   trunk/libs/interprocess/example/doc_node_allocator.cpp | 3 +++
   trunk/libs/interprocess/example/doc_offset_ptr.cpp | 3 +++
   trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp | 3 +++
   trunk/libs/interprocess/example/doc_private_node_allocator.cpp | 3 +++
   trunk/libs/interprocess/example/doc_scoped_ptr.cpp | 3 +++
   trunk/libs/interprocess/example/doc_shared_memory.cpp | 3 +++
   trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp | 3 +++
   trunk/libs/interprocess/example/doc_spawn_vector.cpp | 3 +++
   trunk/libs/interprocess/example/doc_unordered_map.cpp | 3 +++
   trunk/libs/interprocess/example/doc_vectorstream.cpp | 3 +++
   trunk/libs/interprocess/example/doc_where_allocate.cpp | 3 +++
   trunk/libs/interprocess/test/robust_mutex_test.hpp | 1 +
   39 files changed, 122 insertions(+), 0 deletions(-)

Modified: trunk/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- trunk/libs/interprocess/doc/interprocess.qbk (original)
+++ trunk/libs/interprocess/doc/interprocess.qbk 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -6602,6 +6602,16 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_49_00 Boost 1.49 Release]
+
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/6233 #6233],
+ [@https://svn.boost.org/trac/boost/ticket/6287 #6287],
+ [@https://svn.boost.org/trac/boost/ticket/6054 #6054],
+ [@https://svn.boost.org/trac/boost/ticket/5326 #5326].
+
+[endsect]
+
 [section:release_notes_boost_1_48_00 Boost 1.48 Release]
 
 * Fixed bugs

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -27,6 +27,9 @@
       shm_remove() { shared_memory_object::remove("MySharedMemory"); }
       ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create a shared memory object.
    shared_memory_object shm

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -25,6 +25,9 @@
    {
       ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Open the shared memory object.
    shared_memory_object shm

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -24,6 +24,9 @@
       shm_remove() { shared_memory_object::remove("MySharedMemory"); }
       ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create a shared memory object.
    shared_memory_object shm

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -23,6 +23,9 @@
    {
       ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create a shared memory object.
    shared_memory_object shm

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -25,6 +25,9 @@
    {
       ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create a shared memory object.
    shared_memory_object shm

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -26,6 +26,9 @@
    {
       ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Open the shared memory object.
    shared_memory_object shm

Modified: trunk/libs/interprocess/example/doc_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_adaptive_pool.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_allocator.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_bufferstream.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_bufferstream.cpp (original)
+++ trunk/libs/interprocess/example/doc_bufferstream.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -38,6 +38,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_cached_adaptive_pool.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_cached_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cached_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_cached_node_allocator.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_complex_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_complex_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_complex_map.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -70,6 +70,9 @@
       #endif
       //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_cont.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_cont.cpp (original)
+++ trunk/libs/interprocess/example/doc_cont.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -35,6 +35,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //A managed shared memory where we can construct objects
    //associated with a c-string

Modified: trunk/libs/interprocess/example/doc_intrusive.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_intrusive.cpp (original)
+++ trunk/libs/interprocess/example/doc_intrusive.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -89,6 +89,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_ipc_message.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_ipc_message.cpp (original)
+++ trunk/libs/interprocess/example/doc_ipc_message.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
       #endif
       //->
       } remover;
+ //<-
+ (void)remover;
+ //->
 
       //Create a managed shared memory segment
       //<-

Modified: trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_aligned_allocation.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -34,6 +34,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Managed memory segment that allocates portions of a shared memory
    //segment with the default management algorithm

Modified: trunk/libs/interprocess/example/doc_managed_allocation_command.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_allocation_command.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_allocation_command.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -34,6 +34,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Managed memory segment that allocates portions of a shared memory
    //segment with the default management algorithm

Modified: trunk/libs/interprocess/example/doc_managed_construction_info.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_construction_info.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_construction_info.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -40,6 +40,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/example/doc_managed_grow.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_grow.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_grow.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -39,6 +39,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    {
       //Create a managed shared memory

Modified: trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_multiple_allocation.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -39,6 +39,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp (original)
+++ trunk/libs/interprocess/example/doc_managed_raw_allocation.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -33,6 +33,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Managed memory segment that allocates portions of a shared memory
    //segment with the default management algorithm

Modified: trunk/libs/interprocess/example/doc_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_map.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -38,6 +38,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Shared memory front-end that is able to construct objects
    //associated with a c-string. Erase previous shared memory with the name

Modified: trunk/libs/interprocess/example/doc_move_containers.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_move_containers.cpp (original)
+++ trunk/libs/interprocess/example/doc_move_containers.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -46,6 +46,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/example/doc_multi_index.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_multi_index.cpp (original)
+++ trunk/libs/interprocess/example/doc_multi_index.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -79,6 +79,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_named_alloc.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_alloc.cpp (original)
+++ trunk/libs/interprocess/example/doc_named_alloc.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -40,6 +40,9 @@
       #endif
       //->
       } remover;
+ //<-
+ (void)remover;
+ //->
 
       //Construct managed shared memory
       //<-

Modified: trunk/libs/interprocess/example/doc_named_mutex.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_named_mutex.cpp (original)
+++ trunk/libs/interprocess/example/doc_named_mutex.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -51,6 +51,9 @@
       #endif
       //->
       } remover;
+ //<-
+ (void)remover;
+ //->
 
       //Open or create the named mutex
    //<-

Modified: trunk/libs/interprocess/example/doc_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_node_allocator.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_offset_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_offset_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_offset_ptr.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -42,6 +42,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp (original)
+++ trunk/libs/interprocess/example/doc_private_adaptive_pool.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_private_node_allocator.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_private_node_allocator.cpp (original)
+++ trunk/libs/interprocess/example/doc_private_node_allocator.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -36,6 +36,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_scoped_ptr.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_scoped_ptr.cpp (original)
+++ trunk/libs/interprocess/example/doc_scoped_ptr.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -65,6 +65,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/example/doc_shared_memory.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_memory.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_memory.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -38,6 +38,9 @@
       #endif
       //->
       } remover;
+ //<-
+ (void)remover;
+ //->
 
       //Create a shared memory object.
       //<-

Modified: trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp (original)
+++ trunk/libs/interprocess/example/doc_shared_ptr_explicit.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -49,6 +49,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/example/doc_spawn_vector.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_spawn_vector.cpp (original)
+++ trunk/libs/interprocess/example/doc_spawn_vector.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -48,6 +48,9 @@
       #endif
       //->
       } remover;
+ //<-
+ (void)remover;
+ //->
 
       //Create a new segment with given name and size
       //<-

Modified: trunk/libs/interprocess/example/doc_unordered_map.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_unordered_map.cpp (original)
+++ trunk/libs/interprocess/example/doc_unordered_map.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -38,6 +38,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //Create shared memory
    //<-

Modified: trunk/libs/interprocess/example/doc_vectorstream.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_vectorstream.cpp (original)
+++ trunk/libs/interprocess/example/doc_vectorstream.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -48,6 +48,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/example/doc_where_allocate.cpp
==============================================================================
--- trunk/libs/interprocess/example/doc_where_allocate.cpp (original)
+++ trunk/libs/interprocess/example/doc_where_allocate.cpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -47,6 +47,9 @@
    #endif
    //->
    } remover;
+ //<-
+ (void)remover;
+ //->
 
    //<-
    #if 1

Modified: trunk/libs/interprocess/test/robust_mutex_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/robust_mutex_test.hpp (original)
+++ trunk/libs/interprocess/test/robust_mutex_test.hpp 2011-12-23 08:23:27 EST (Fri, 23 Dec 2011)
@@ -45,6 +45,7 @@
          ~shm_remove(){ shared_memory_object::remove
             (::boost::interprocess::test::get_process_id_name()); }
       } remover;
+ (void)remover;
 
       //Construct managed shared memory
       managed_shared_memory segment(create_only, get_process_id_name(), 65536);


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk