$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r52528 - in sandbox/task/boost: . task
From: oliver.kowalke_at_[hidden]
Date: 2009-04-21 15:37:01
Author: olli
Date: 2009-04-21 15:37:00 EDT (Tue, 21 Apr 2009)
New Revision: 52528
URL: http://svn.boost.org/trac/boost/changeset/52528
Log:
* id for task added
Added:
   sandbox/task/boost/task/id.hpp   (contents, props changed)
Text files modified: 
   sandbox/task/boost/task.hpp        |     1 +                                       
   sandbox/task/boost/task/handle.hpp |    35 +++++++++++++++++++++++++++++------     
   sandbox/task/boost/task/task.hpp   |    21 +++++++++++----------                   
   3 files changed, 41 insertions(+), 16 deletions(-)
Modified: sandbox/task/boost/task.hpp
==============================================================================
--- sandbox/task/boost/task.hpp	(original)
+++ sandbox/task/boost/task.hpp	2009-04-21 15:37:00 EDT (Tue, 21 Apr 2009)
@@ -12,6 +12,7 @@
 #include <boost/task/exceptions.hpp>
 #include <boost/task/fifo.hpp>
 #include <boost/task/handle.hpp>
+#include <boost/task/id.hpp>
 #include <boost/task/info.hpp>
 #include <boost/task/launch.hpp>
 #include <boost/task/lifo.hpp>
Modified: sandbox/task/boost/task/handle.hpp
==============================================================================
--- sandbox/task/boost/task/handle.hpp	(original)
+++ sandbox/task/boost/task/handle.hpp	2009-04-21 15:37:00 EDT (Tue, 21 Apr 2009)
@@ -13,6 +13,7 @@
 #include <boost/task/detail/interrupter.hpp>
 #include <boost/task/future.hpp>
 #include <boost/task/exceptions.hpp>
+#include <boost/task/id.hpp>
 
 namespace boost { namespace task
 {
@@ -48,16 +49,26 @@
 
         shared_future< R >		fut_;
         detail::interrupter		intr_;
+	id						id_;
 
-	handle( shared_future< R > const& fut, detail::interrupter const& intr)
-	: fut_( fut), intr_( intr)
+	handle(
+		shared_future< R > const& fut,
+		detail::interrupter const& intr,
+		id const& id__)
+	:
+	fut_( fut),
+	intr_( intr),
+	id_( id__)
         {}
 
 public:
         handle()
-	: fut_(), intr_()
+	: fut_(), intr_(), id_()
         {}
 
+	const id get_id() const
+	{ return id_; }
+
         void interrupt()
         { intr_.interrupt(); }
 
@@ -105,6 +116,7 @@
         {
                 fut_.swap( other.fut_);
                 intr_.swap( other.intr_);
+		id_.swap( other.id_);
         }
 };
 
@@ -137,16 +149,27 @@
 
         shared_future< void >	fut_;
         detail::interrupter		intr_;
+	id						id_;
 
-	handle( shared_future< void > const& fut, detail::interrupter const& intr)
-	: fut_( fut), intr_( intr)
+	handle(
+		shared_future< void > const& fut,
+		detail::interrupter const& intr,
+		id const& id__)
+	:
+	fut_( fut),
+	intr_( intr),
+	id_( id__)
         {}
 
+
 public:
         handle()
-	: fut_(), intr_()
+	: fut_(), intr_(), id_()
         {}
 
+	const id get_id() const
+	{ return id_; }
+
         void interrupt()
         { intr_.interrupt(); }
 
Added: sandbox/task/boost/task/id.hpp
==============================================================================
--- (empty file)
+++ sandbox/task/boost/task/id.hpp	2009-04-21 15:37:00 EDT (Tue, 21 Apr 2009)
@@ -0,0 +1,64 @@
+
+//          Copyright Oliver Kowalke 2009.
+// Distributed under the Boost Software License, Version 1.0.
+//    (See accompanying file LICENSE_1_0.txt or copy at
+//          http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TASK_ID_H
+#define BOOST_TASK_ID_H
+
+#include <iostream>
+#include <string>
+
+namespace boost { namespace task
+{
+template< typename R >
+class task;
+
+class id
+{
+private:
+	template< typename R >
+	friend class task;
+
+	std::string	id_;
+
+	id( std::string const& id__)
+	: id_( id__)
+	{}
+
+public:
+	id()
+	: id_("{not-any-task}")
+	{}
+
+	bool operator==( id const& other) const
+	{ return id_ == other.id_; }
+
+	bool operator!=( id const& other) const
+	{ return id_ != other.id_; }
+
+	bool operator<( id const& other) const
+	{ return id_ < other.id_; }
+
+	bool operator>( id const& other) const
+	{ return id_ > other.id_; }
+
+	bool operator<=( id const& other) const
+	{ return id_ <= other.id_; }
+
+	bool operator>=( id const& other) const
+	{ return id_ >= other.id_; }
+
+	template< typename charT, typename traitsT >
+	friend std::basic_ostream< charT, traitsT > & 
+	operator<<( std::basic_ostream< charT, traitsT > & os, id const& r)
+	{ return os << r.id_; }
+
+	void swap( id & other)
+	{ id_.swap( other.id_); }
+};
+} }
+
+#endif // BOOST_TASK_ID_H
+
Modified: sandbox/task/boost/task/task.hpp
==============================================================================
--- sandbox/task/boost/task/task.hpp	(original)
+++ sandbox/task/boost/task/task.hpp	2009-04-21 15:37:00 EDT (Tue, 21 Apr 2009)
@@ -11,8 +11,10 @@
 #include <ios>
 #include <new>
 #include <stdexcept>
+#include <string>
 #include <typeinfo>
 
+#include <boost/lexical_cast.hpp>
 #include <boost/preprocessor/repetition.hpp>
 #include <boost/thread.hpp>
 #include <boost/thread/thread_time.hpp>
@@ -22,6 +24,7 @@
 #include <boost/task/future.hpp>
 #include <boost/task/exceptions.hpp>
 #include <boost/task/handle.hpp>
+#include <boost/task/id.hpp>
 
 namespace boost { namespace task
 {
@@ -115,17 +118,16 @@
         shared_ptr< impl >	impl_;
 
 public:
-	task()
-	: impl_()
-	{}
-
         template< typename Fn >
         task( Fn const& fn)
         : impl_( new impl_wrapper< Fn >( fn) )
         {}
 
+	const id get_id() const
+	{ return id( lexical_cast< std::string >( impl_.get() ) ); }
+
         const handle< R > get_handle()
-	{ return handle< R >( impl_->fut, impl_->intr); }
+	{ return handle< R >( impl_->fut, impl_->intr, get_id() ); }
 
         void swap( task< R > & other) // throw()
         { impl_.swap( other.impl_); }
@@ -223,17 +225,16 @@
         shared_ptr< impl >	impl_;
 
 public:
-	task()
-	: impl_()
-	{}
-
         template< typename Fn >
         task( Fn const& fn)
         : impl_( new impl_wrapper< Fn >( fn) )
         {}
 
+	const id get_id() const
+	{ return id( lexical_cast< std::string >( impl_.get() ) ); }
+
         const handle< void > get_handle()
-	{ return handle< void >( impl_->fut, impl_->intr); }
+	{ return handle< void >( impl_->fut, impl_->intr, get_id() ); }
 
         void swap( task< void > & other) // throw()
         { impl_.swap( other.impl_); }