Update of /cvsroot/boost/boost/boost/interprocess/detail
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29744/detail

Modified Files:
        creation_tags.hpp file_wrapper.hpp in_place_interface.hpp 
        iterators.hpp managed_memory_impl.hpp 
        managed_open_or_create_impl.hpp 
Log Message:
no message

Index: creation_tags.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/interprocess/detail/creation_tags.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- creation_tags.hpp   12 May 2007 12:51:19 -0000      1.3
+++ creation_tags.hpp   23 Jun 2007 12:52:18 -0000      1.4
@@ -26,6 +26,9 @@
 static const detail::open_or_create_t  open_or_create = 
detail::open_or_create_t();
 static const detail::open_only_t       open_only      = detail::open_only_t();
 
+enum create_enum_t
+{  DoCreate, DoOpen, DoCreateOrOpen   };
+
 }}  //namespace boost { namespace interprocess {
 
 #include <boost/interprocess/detail/config_end.hpp>

Index: file_wrapper.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/interprocess/detail/file_wrapper.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- file_wrapper.hpp    12 Jun 2007 17:07:07 -0000      1.4
+++ file_wrapper.hpp    23 Jun 2007 12:52:18 -0000      1.5
@@ -14,6 +14,7 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/detail/os_file_functions.hpp>
+#include <boost/interprocess/detail/creation_tags.hpp>
 #include <boost/interprocess/detail/move.hpp>
 #include <boost/interprocess/detail/creation_tags.hpp>
 

Index: in_place_interface.hpp
===================================================================
RCS file: 
/cvsroot/boost/boost/boost/interprocess/detail/in_place_interface.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- in_place_interface.hpp      12 Jun 2007 17:07:07 -0000      1.1
+++ in_place_interface.hpp      23 Jun 2007 12:52:18 -0000      1.2
@@ -17,7 +17,7 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
-#include <boost/type_traits/alignment_of.hpp>
+#include <boost/interprocess/detail/type_traits.hpp>
 #include <typeinfo>  //typeid
 
 /*!\file
@@ -49,7 +49,7 @@
 struct placement_destroy :  public in_place_interface
 {
    placement_destroy()
-      :  in_place_interface(boost::alignment_of<T>::value, sizeof(T), 
typeid(T).name())
+      :  in_place_interface(detail::alignment_of<T>::value, sizeof(T), 
typeid(T).name())
    {}
 
    virtual void destroy(void *mem)

Index: iterators.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/interprocess/detail/iterators.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- iterators.hpp       12 Jun 2007 17:07:08 -0000      1.1
+++ iterators.hpp       23 Jun 2007 12:52:18 -0000      1.2
@@ -22,30 +22,18 @@
 #include <boost/interprocess/detail/workaround.hpp>
 
 #include <boost/interprocess/interprocess_fwd.hpp>
-#include <boost/iterator/iterator_facade.hpp>
+
+#include <iterator>
 
 namespace boost {
 namespace interprocess { 
 
 template <class T, class Difference = std::ptrdiff_t>
 class constant_iterator
-   :  public boost::iterator_facade
-         < constant_iterator<T, Difference>
-         , T
-         , boost::random_access_traversal_tag
-         , const T &
-         , Difference>
+  : public std::iterator
+      <std::random_access_iterator_tag, T, Difference, const T*, const T &>
 {
-   typedef boost::iterator_facade
-         < constant_iterator<T, Difference>
-         , T
-         , boost::random_access_traversal_tag
-         , const T &
-         , Difference>  super_t;
-
    typedef  constant_iterator<T, Difference> this_type;
-   //Give access to private core functions
-   friend class boost::iterator_core_access;
 
    public:
    explicit constant_iterator(const T &ref, Difference range_size)
@@ -55,8 +43,65 @@
    constant_iterator()
       :  m_ptr(0), m_num(0){}
 
+   constant_iterator& operator++() 
+   { increment();   return *this;   }
+   
+   constant_iterator operator++(int)
+   {
+      constant_iterator result (*this);
+      increment();
+      return result;
+   }
+
+   friend bool operator== (const constant_iterator& i, const 
constant_iterator& i2)
+   { return i.equal(i2); }
+
+   friend bool operator!= (const constant_iterator& i, const 
constant_iterator& i2)
+   { return !(i == i2); }
+
+   friend bool operator< (const constant_iterator& i, const constant_iterator& 
i2)
+   { return i.less(i2); }
+
+   friend bool operator> (const constant_iterator& i, const constant_iterator& 
i2)
+   { return i2 < i; }
+
+   friend bool operator<= (const constant_iterator& i, const 
constant_iterator& i2)
+   { return !(i > i2); }
+
+   friend bool operator>= (const constant_iterator& i, const 
constant_iterator& i2)
+   { return !(i < i2); }
+
+   friend Difference operator- (const constant_iterator& i, const 
constant_iterator& i2)
+   { return i2.distance_to(i); }
+
+   //Arithmetic
+   constant_iterator& operator+=(Difference off)
+   {  this->advance(off); return *this;   }
+
+   constant_iterator operator+(Difference off) const
+   {
+      constant_iterator other(*this);
+      other.advance(off);
+      return other;
+   }
+
+   friend constant_iterator operator+(Difference off, const constant_iterator& 
right)
+   {  return right + off; }
+
+   constant_iterator& operator-=(Difference off)
+   {  this->advance(-off); return *this;   }
+
+   constant_iterator operator-(Difference off) const
+   {  return *this + (-off);  }
+
+   const T& operator*() const
+   { return dereference(); }
+
+   const T* operator->() const
+   { return &(dereference()); }
+
    private:
-   const T *         m_ptr;
+   const T *   m_ptr;
    Difference  m_num;
 
    void increment()
@@ -68,6 +113,9 @@
    bool equal(const this_type &other) const
    {  return m_num == other.m_num;   }
 
+   bool less(const this_type &other) const
+   {  return other.m_num < m_num;   }
+
    const T & dereference() const
    { return *m_ptr; }
 
@@ -80,24 +128,10 @@
 
 template <class T, class Difference = std::ptrdiff_t>
 class repeat_iterator
-   :  public boost::iterator_facade
-         < repeat_iterator<T, Difference>
-         , T
-         , boost::random_access_traversal_tag
-         , T &
-         , Difference>
+  : public std::iterator
+      <std::random_access_iterator_tag, T, Difference>
 {
-   typedef boost::iterator_facade
-         < repeat_iterator<T, Difference>
-         , T
-         , boost::random_access_traversal_tag
-         , T &
-         , Difference>  super_t;
-
-   typedef  repeat_iterator<T, Difference> this_type;
-   //Give access to private core functions
-   friend class boost::iterator_core_access;
-
+   typedef repeat_iterator this_type;
    public:
    explicit repeat_iterator(T &ref, Difference range_size)
       :  m_ptr(&ref), m_num(range_size){}
@@ -106,6 +140,63 @@
    repeat_iterator()
       :  m_ptr(0), m_num(0){}
 
+   repeat_iterator& operator++() 
+   { increment();   return *this;   }
+   
+   repeat_iterator operator++(int)
+   {
+      repeat_iterator result (*this);
+      increment();
+      return result;
+   }
+
+   friend bool operator== (const repeat_iterator& i, const repeat_iterator& i2)
+   { return i.equal(i2); }
+
+   friend bool operator!= (const repeat_iterator& i, const repeat_iterator& i2)
+   { return !(i == i2); }
+
+   friend bool operator< (const repeat_iterator& i, const repeat_iterator& i2)
+   { return i.less(i2); }
+
+   friend bool operator> (const repeat_iterator& i, const repeat_iterator& i2)
+   { return i2 < i; }
+
+   friend bool operator<= (const repeat_iterator& i, const repeat_iterator& i2)
+   { return !(i > i2); }
+
+   friend bool operator>= (const repeat_iterator& i, const repeat_iterator& i2)
+   { return !(i < i2); }
+
+   friend Difference operator- (const repeat_iterator& i, const 
repeat_iterator& i2)
+   { return i2.distance_to(i); }
+
+   //Arithmetic
+   repeat_iterator& operator+=(Difference off)
+   {  this->advance(off); return *this;   }
+
+   repeat_iterator operator+(Difference off) const
+   {
+      repeat_iterator other(*this);
+      other.advance(off);
+      return other;
+   }
+
+   friend repeat_iterator operator+(Difference off, const repeat_iterator& 
right)
+   {  return right + off; }
+
+   repeat_iterator& operator-=(Difference off)
+   {  this->advance(-off); return *this;   }
+
+   repeat_iterator operator-(Difference off) const
+   {  return *this + (-off);  }
+
+   T& operator*() const
+   { return dereference(); }
+
+   T *operator->() const
+   { return &(dereference()); }
+
    private:
    T *         m_ptr;
    Difference  m_num;
@@ -119,6 +210,9 @@
    bool equal(const this_type &other) const
    {  return m_num == other.m_num;   }
 
+   bool less(const this_type &other) const
+   {  return other.m_num < m_num;   }
+
    T & dereference() const
    { return *m_ptr; }
 
@@ -129,6 +223,125 @@
    {  return m_num - other.m_num;   }
 };
 
+template <class PseudoReference>
+struct operator_arrow_proxy
+{
+   operator_arrow_proxy(const PseudoReference &px)
+      :  m_value(px)
+   {}
+
+   PseudoReference* operator->() const { return &m_value; }
+   // This function is needed for MWCW and BCC, which won't call operator->
+   // again automatically per 13.3.1.2 para 8
+//   operator T*() const { return &m_value; }
+   mutable PseudoReference m_value;
+};
+
+
+template <class Iterator, class UnaryFunction>
+class transform_iterator
+   : public UnaryFunction
+   , public std::iterator
+      < typename Iterator::iterator_category
+      , typename Iterator::value_type
+      , typename Iterator::difference_type
+      , typename Iterator::pointer
+      , typename UnaryFunction::result_type>
+{
+   public:
+   explicit transform_iterator(const Iterator &it, const UnaryFunction &f)
+      :  UnaryFunction(f), m_it(it)
+   {}
+
+   //Constructors
+   transform_iterator& operator++() 
+   { increment();   return *this;   }
+
+   transform_iterator operator++(int)
+   {
+      transform_iterator result (*this);
+      increment();
+      return result;
+   }
+
+   friend bool operator== (const transform_iterator& i, const 
transform_iterator& i2)
+   { return i.equal(i2); }
+
+   friend bool operator!= (const transform_iterator& i, const 
transform_iterator& i2)
+   { return !(i == i2); }
+
+/*
+   friend bool operator> (const transform_iterator& i, const 
transform_iterator& i2)
+   { return i2 < i; }
+
+   friend bool operator<= (const transform_iterator& i, const 
transform_iterator& i2)
+   { return !(i > i2); }
+
+   friend bool operator>= (const transform_iterator& i, const 
transform_iterator& i2)
+   { return !(i < i2); }
+*/
+   friend typename Iterator::difference_type operator- (const 
transform_iterator& i, const transform_iterator& i2)
+   { return i2.distance_to(i); }
+
+   //Arithmetic
+   transform_iterator& operator+=(typename Iterator::difference_type off)
+   {  this->advance(off); return *this;   }
+
+   transform_iterator operator+(typename Iterator::difference_type off) const
+   {
+      transform_iterator other(*this);
+      other.advance(off);
+      return other;
+   }
+
+   friend transform_iterator operator+(typename Iterator::difference_type off, 
const transform_iterator& right)
+   {  return right + off; }
+
+   transform_iterator& operator-=(typename Iterator::difference_type off)
+   {  this->advance(-off); return *this;   }
+
+   transform_iterator operator-(typename Iterator::difference_type off) const
+   {  return *this + (-off);  }
+
+   typename UnaryFunction::result_type operator*() const
+   { return dereference(); }
+
+   operator_arrow_proxy<typename UnaryFunction::result_type>
+      operator->() const
+   { return operator_arrow_proxy<typename 
UnaryFunction::result_type>(dereference());  }
+
+   private:
+   Iterator m_it;
+
+   void increment()
+   { ++m_it; }
+
+   void decrement()
+   { --m_it; }
+
+   bool equal(const transform_iterator &other) const
+   {  return m_it == other.m_it;   }
+
+   bool less(const transform_iterator &other) const
+   {  return other.m_it < m_it;   }
+
+   typename UnaryFunction::result_type dereference() const
+   { return UnaryFunction::operator()(*m_it); }
+
+   void advance(typename Iterator::difference_type n)
+   {  std::advance(m_it, n); }
+
+   typename Iterator::difference_type distance_to(const transform_iterator 
&other)const
+   {  return std::distance(other.m_it, m_it); }
+};
+
+template <class Iterator, class UnaryFunc>
+transform_iterator<Iterator, UnaryFunc>
+make_transform_iterator(Iterator it, UnaryFunc fun)
+{
+   return transform_iterator<Iterator, UnaryFunc>(it, fun);
+}
+
 }  //namespace interprocess { 
 }  //namespace boost {
 

Index: managed_memory_impl.hpp
===================================================================
RCS file: 
/cvsroot/boost/boost/boost/interprocess/detail/managed_memory_impl.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- managed_memory_impl.hpp     12 Jun 2007 17:07:08 -0000      1.6
+++ managed_memory_impl.hpp     23 Jun 2007 12:52:18 -0000      1.7
@@ -23,13 +23,13 @@
 #include <boost/interprocess/mem_algo/rbtree_best_fit.hpp>
 #include <boost/interprocess/sync/mutex_family.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
+#include <boost/interprocess/detail/creation_tags.hpp>
 #include <boost/interprocess/sync/interprocess_mutex.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <boost/interprocess/offset_ptr.hpp>
 #include <boost/interprocess/segment_manager.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
 //
-#include <boost/ref.hpp>
 #include <boost/detail/no_exceptions_support.hpp>
 //
 #include <utility>
@@ -624,7 +624,6 @@
 class create_open_func
 {
    public:
-
    create_open_func(BasicManagedMemoryImpl * const frontend, create_enum_t 
type)
       : m_frontend(frontend), m_type(type){}
 

Index: managed_open_or_create_impl.hpp
===================================================================
RCS file: 
/cvsroot/boost/boost/boost/interprocess/detail/managed_open_or_create_impl.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- managed_open_or_create_impl.hpp     12 Jun 2007 17:07:08 -0000      1.7
+++ managed_open_or_create_impl.hpp     23 Jun 2007 12:52:18 -0000      1.8
@@ -13,10 +13,10 @@
 
 #include <boost/interprocess/detail/os_thread_functions.hpp>
 #include <boost/interprocess/detail/os_file_functions.hpp>
+#include <boost/interprocess/detail/creation_tags.hpp>
 #include <boost/interprocess/mapped_region.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
-#include <boost/type_traits/alignment_of.hpp>
-#include <boost/type_traits/type_with_alignment.hpp>
+#include <boost/interprocess/detail/type_traits.hpp>
 #include <boost/interprocess/detail/atomic.hpp>
 #include <boost/interprocess/detail/creation_tags.hpp>
 #include <boost/interprocess/detail/mpl.hpp>
@@ -49,7 +49,7 @@
       ManagedOpenOrCreateUserOffset = 
          detail::ct_rounded_size
             < sizeof(boost::uint32_t)
-            , boost::alignment_of<boost::detail::max_align>::value>::value
+            , detail::alignment_of<detail::max_align>::value>::value
    };
 
    managed_open_or_create_impl(detail::create_only_t, 
@@ -200,11 +200,11 @@
 
    //These are templatized to allow explicit instantiations
    template<bool dummy>
-   static void write_whole_device(DeviceAbstraction &, std::size_t, false_)
+   static void write_whole_device(DeviceAbstraction &, std::size_t, 
detail::false_)
    {} //Empty
 
    template<bool dummy>
-   static void write_whole_device(DeviceAbstraction &dev, std::size_t size, 
true_)
+   static void write_whole_device(DeviceAbstraction &dev, std::size_t size, 
detail::true_)
    {
       file_handle_t hnd = 
detail::file_handle_from_mapping_handle(dev.get_mapping_handle());
 
@@ -234,23 +234,23 @@
 
    //These are templatized to allow explicit instantiations
    template<bool dummy>
-   static void truncate_device(DeviceAbstraction &, std::size_t, false_)
+   static void truncate_device(DeviceAbstraction &, std::size_t, 
detail::false_)
    {} //Empty
 
    template<bool dummy>
-   static void truncate_device(DeviceAbstraction &dev, std::size_t size, true_)
+   static void truncate_device(DeviceAbstraction &dev, std::size_t size, 
detail::true_)
    {  dev.truncate(size);  }
 
    //These are templatized to allow explicit instantiations
    template<bool dummy>
-   static void create_device(DeviceAbstraction &dev, const char *name, 
std::size_t size, false_)
+   static void create_device(DeviceAbstraction &dev, const char *name, 
std::size_t size, detail::false_)
    {
       DeviceAbstraction tmp(create_only, name, read_write, size);
       tmp.swap(dev);
    }
 
    template<bool dummy>
-   static void create_device(DeviceAbstraction &dev, const char *name, 
std::size_t, true_)
+   static void create_device(DeviceAbstraction &dev, const char *name, 
std::size_t, detail::true_)
    {
       DeviceAbstraction tmp(create_only, name, read_write);
       tmp.swap(dev);
@@ -262,7 +262,7 @@
        mode_t mode, const void *addr,
        ConstructFunc construct_func)
    {
-      typedef bool_<FileBased> file_like_t;
+      typedef detail::bool_<FileBased> file_like_t;
       (void)mode;
       error_info err;
       bool created = false;


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to