diff options
Diffstat (limited to 'boost/interprocess/detail/intersegment_ptr.hpp')
-rw-r--r-- | boost/interprocess/detail/intersegment_ptr.hpp | 120 |
1 files changed, 60 insertions, 60 deletions
diff --git a/boost/interprocess/detail/intersegment_ptr.hpp b/boost/interprocess/detail/intersegment_ptr.hpp index 92970923d0..16d3505883 100644 --- a/boost/interprocess/detail/intersegment_ptr.hpp +++ b/boost/interprocess/detail/intersegment_ptr.hpp @@ -68,8 +68,8 @@ struct intersegment_base static const std::size_t begin_bits = max_segment_size_bits - align_bits; static const std::size_t pow_size_bits_helper = static_log2<max_segment_size_bits>::value; - static const std::size_t pow_size_bits = - (max_segment_size_bits == (std::size_t(1) << pow_size_bits_helper)) ? + static const std::size_t pow_size_bits = + (max_segment_size_bits == (std::size_t(1) << pow_size_bits_helper)) ? pow_size_bits_helper : pow_size_bits_helper + 1; static const std::size_t frc_size_bits = size_t_bits - ctrl_bits - begin_bits - pow_size_bits; @@ -177,7 +177,7 @@ struct intersegment_base void set_mode(std::size_t mode) { - BOOST_ASSERT(mode < is_max_mode); + BOOST_ASSERT(mode < is_max_mode); members.direct.ctrl = mode; } @@ -185,7 +185,7 @@ struct intersegment_base //!null pointer bool is_null() const { - return (this->get_mode() < is_relative) && + return (this->get_mode() < is_relative) && !members.direct.dummy && !members.direct.addr; } @@ -309,13 +309,13 @@ struct flat_map_intersegment void *ptr_base; void *this_base; get_segment_info_and_offset(this, this_info, this_offset, this_base); - + if(!this_info.group){ this->set_mode(is_in_stack); this->members.direct.addr = const_cast<void*>(ptr); } else{ - get_segment_info_and_offset(ptr, ptr_info, ptr_offset, ptr_base); + get_segment_info_and_offset(ptr, ptr_info, ptr_offset, ptr_base); if(ptr_info.group != this_info.group){ this->set_mode(is_pointee_outside); @@ -340,7 +340,7 @@ struct flat_map_intersegment } } - //!Sets the object internals to represent the address pointed + //!Sets the object internals to represent the address pointed //!by another flat_map_intersegment void set_from_other(const self_t &other) { @@ -383,7 +383,7 @@ struct flat_map_intersegment }; vector<segment_data> m_segments; multi_segment_services &m_ms_services; - + public: segment_group_t(multi_segment_services &ms_services) : m_ms_services(ms_services) @@ -434,7 +434,7 @@ struct flat_map_intersegment typedef set<segment_group_t> segment_groups_t; typedef boost::interprocess::flat_map - <const void * + <const void * ,segment_info_t ,std::less<const void *> > ptr_to_segment_info_t; @@ -443,9 +443,9 @@ struct flat_map_intersegment //!Mutex to preserve integrity in multi-threaded //!enviroments typedef Mutex mutex_type; - //!Maps base addresses and segment information + //!Maps base addresses and segment information //!(size and segment group and id)* - + ptr_to_segment_info_t m_ptr_to_segment_info; ~mappings_t() @@ -476,7 +476,7 @@ struct flat_map_intersegment return; } //Find the first base address greater than ptr - typename ptr_to_segment_info_t::iterator it + typename ptr_to_segment_info_t::iterator it = s_map.m_ptr_to_segment_info.upper_bound(ptr); if(it == s_map.m_ptr_to_segment_info.begin()){ segment = segment_info_t(); @@ -486,7 +486,7 @@ struct flat_map_intersegment --it; char * segment_base = const_cast<char*>(reinterpret_cast<const char*>(it->first)); std::size_t segment_size = it->second.size; - + if(segment_base <= reinterpret_cast<const char*>(ptr) && (segment_base + segment_size) >= reinterpret_cast<const char*>(ptr)){ segment = it->second; @@ -552,7 +552,7 @@ struct flat_map_intersegment s_groups.insert(segment_group_t(*services)); BOOST_ASSERT(ret.second); return &*ret.first; - } + } } static bool delete_group(segment_group_id id) @@ -574,23 +574,23 @@ struct flat_map_intersegment } } return success; - } + } } }; //!Static map-segment_info associated with //!flat_map_intersegment<> template <class Mutex> -typename flat_map_intersegment<Mutex>::mappings_t +typename flat_map_intersegment<Mutex>::mappings_t flat_map_intersegment<Mutex>::s_map; //!Static segment group container associated with //!flat_map_intersegment<> template <class Mutex> -typename flat_map_intersegment<Mutex>::segment_groups_t +typename flat_map_intersegment<Mutex>::segment_groups_t flat_map_intersegment<Mutex>::s_groups; -//!A smart pointer that can point to a pointee that resides in another memory +//!A smart pointer that can point to a pointee that resides in another memory //!memory mapped or shared memory segment. template <class T> class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> @@ -623,13 +623,13 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> //!Constructor from other intersegment_ptr //!Never throws - intersegment_ptr(const intersegment_ptr& ptr) + intersegment_ptr(const intersegment_ptr& ptr) { base_t::set_from_other(ptr); } - //!Constructor from other intersegment_ptr. If pointers of pointee types are + //!Constructor from other intersegment_ptr. If pointers of pointee types are //!convertible, intersegment_ptrs will be convertibles. Never throws. template<class T2> - intersegment_ptr(const intersegment_ptr<T2> &ptr) + intersegment_ptr(const intersegment_ptr<T2> &ptr) { pointer p(ptr.get()); (void)p; base_t::set_from_other(ptr); } //!Emulates static_cast operator. @@ -663,17 +663,17 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> //!Pointer-like -> operator. It can return 0 pointer. //!Never throws. - pointer operator->() const + pointer operator->() const { return self_t::get(); } - //!Dereferencing operator, if it is a null intersegment_ptr behavior + //!Dereferencing operator, if it is a null intersegment_ptr behavior //!is undefined. Never throws. - reference operator* () const + reference operator* () const { return *(self_t::get()); } //!Indexing operator. //!Never throws. - reference operator[](std::ptrdiff_t idx) const + reference operator[](std::ptrdiff_t idx) const { return self_t::get()[idx]; } //!Assignment from pointer (saves extra conversion). @@ -686,19 +686,19 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> intersegment_ptr& operator= (const intersegment_ptr &ptr) { base_t::set_from_other(ptr); return *this; } - //!Assignment from related intersegment_ptr. If pointers of pointee types + //!Assignment from related intersegment_ptr. If pointers of pointee types //!are assignable, intersegment_ptrs will be assignable. Never throws. template <class T2> intersegment_ptr& operator= (const intersegment_ptr<T2> & ptr) - { - pointer p(ptr.get()); (void)p; - base_t::set_from_other(ptr); return *this; + { + pointer p(ptr.get()); (void)p; + base_t::set_from_other(ptr); return *this; } - + //!intersegment_ptr + std::ptrdiff_t. //!Never throws. - intersegment_ptr operator+ (std::ptrdiff_t idx) const - { + intersegment_ptr operator+ (std::ptrdiff_t idx) const + { intersegment_ptr result (*this); result.inc_offset(idx*sizeof(T)); return result; @@ -706,8 +706,8 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> //!intersegment_ptr - std::ptrdiff_t. //!Never throws. - intersegment_ptr operator- (std::ptrdiff_t idx) const - { + intersegment_ptr operator- (std::ptrdiff_t idx) const + { intersegment_ptr result (*this); result.dec_offset(idx*sizeof(T)); return result; @@ -727,7 +727,7 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> //!Never throws. intersegment_ptr& operator++ (void) { base_t::inc_offset(sizeof(T)); return *this; } - + //!intersegment_ptr++. //!Never throws. intersegment_ptr operator++ (int) @@ -745,10 +745,10 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> //!Safe bool conversion operator. //!Never throws. - operator unspecified_bool_type() const + operator unspecified_bool_type() const { return base_t::is_null()? 0 : &self_t::unspecified_bool_type_func; } - //!Not operator. Not needed in theory, but improves portability. + //!Not operator. Not needed in theory, but improves portability. //!Never throws. bool operator! () const { return base_t::is_null(); } @@ -784,12 +784,12 @@ class intersegment_ptr : public flat_map_intersegment<interprocess_mutex> template <class T1, class T2> inline bool operator ==(const intersegment_ptr<T1> &left, const intersegment_ptr<T2> &right) -{ +{ //Make sure both pointers can be compared bool e = typename intersegment_ptr<T1>::pointer(0) == typename intersegment_ptr<T2>::pointer(0); (void)e; - return left._equal(right); + return left._equal(right); } //!Returns true if *this is less than other. @@ -798,74 +798,74 @@ bool operator ==(const intersegment_ptr<T1> &left, template <class T1, class T2> inline bool operator <(const intersegment_ptr<T1> &left, const intersegment_ptr<T2> &right) -{ +{ //Make sure both pointers can be compared bool e = typename intersegment_ptr<T1>::pointer(0) < typename intersegment_ptr<T2>::pointer(0); (void)e; - return left._less(right); + return left._less(right); } template<class T1, class T2> inline -bool operator!= (const intersegment_ptr<T1> &pt1, +bool operator!= (const intersegment_ptr<T1> &pt1, const intersegment_ptr<T2> &pt2) { return !(pt1 ==pt2); } //!intersegment_ptr<T1> <= intersegment_ptr<T2>. //!Never throws. template<class T1, class T2> inline -bool operator<= (const intersegment_ptr<T1> &pt1, +bool operator<= (const intersegment_ptr<T1> &pt1, const intersegment_ptr<T2> &pt2) { return !(pt1 > pt2); } //!intersegment_ptr<T1> > intersegment_ptr<T2>. //!Never throws. template<class T1, class T2> inline -bool operator> (const intersegment_ptr<T1> &pt1, +bool operator> (const intersegment_ptr<T1> &pt1, const intersegment_ptr<T2> &pt2) { return (pt2 < pt1); } //!intersegment_ptr<T1> >= intersegment_ptr<T2>. //!Never throws. template<class T1, class T2> inline -bool operator>= (const intersegment_ptr<T1> &pt1, +bool operator>= (const intersegment_ptr<T1> &pt1, const intersegment_ptr<T2> &pt2) { return !(pt1 < pt2); } //!operator<< template<class E, class T, class U> inline -std::basic_ostream<E, T> & operator<< +std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, const intersegment_ptr<U> & p) { return os << p.get(); } //!operator>> template<class E, class T, class U> inline -std::basic_istream<E, T> & operator>> +std::basic_istream<E, T> & operator>> (std::basic_istream<E, T> & os, intersegment_ptr<U> & p) { U * tmp; return os >> tmp; p = tmp; } -//!std::ptrdiff_t + intersegment_ptr. +//!std::ptrdiff_t + intersegment_ptr. //!The result is another pointer of the same segment template<class T> inline intersegment_ptr<T> operator+ (std::ptrdiff_t diff, const intersegment_ptr<T>& right) { return right + diff; } -//!intersegment_ptr - intersegment_ptr. +//!intersegment_ptr - intersegment_ptr. //!This only works with two intersegment_ptr-s that point to the //!same segment template <class T, class T2> inline -std::ptrdiff_t operator- (const intersegment_ptr<T> &pt, +std::ptrdiff_t operator- (const intersegment_ptr<T> &pt, const intersegment_ptr<T2> &pt2) { return pt._diff(pt2)/sizeof(T); } //! swap specialization template<class T> inline -void swap (boost::interprocess::intersegment_ptr<T> &pt, +void swap (boost::interprocess::intersegment_ptr<T> &pt, boost::interprocess::intersegment_ptr<T> &pt2) { pt.swap(pt2); } -//!to_raw_pointer() enables boost::mem_fn to recognize intersegment_ptr. +//!to_raw_pointer() enables boost::mem_fn to recognize intersegment_ptr. //!Never throws. template<class T> inline T * to_raw_pointer(boost::interprocess::intersegment_ptr<T> const & p) @@ -873,19 +873,19 @@ T * to_raw_pointer(boost::interprocess::intersegment_ptr<T> const & p) //!Simulation of static_cast between pointers. //!Never throws. -template<class T, class U> inline +template<class T, class U> inline boost::interprocess::intersegment_ptr<T> static_pointer_cast(const boost::interprocess::intersegment_ptr<U> &r) { return boost::interprocess::intersegment_ptr<T>(r, boost::interprocess::ipcdetail::static_cast_tag()); } //!Simulation of const_cast between pointers. //!Never throws. -template<class T, class U> inline +template<class T, class U> inline boost::interprocess::intersegment_ptr<T> const_pointer_cast(const boost::interprocess::intersegment_ptr<U> &r) { return boost::interprocess::intersegment_ptr<T>(r, boost::interprocess::ipcdetail::const_cast_tag()); } //!Simulation of dynamic_cast between pointers. //!Never throws. -template<class T, class U> inline +template<class T, class U> inline boost::interprocess::intersegment_ptr<T> dynamic_pointer_cast(const boost::interprocess::intersegment_ptr<U> &r) { return boost::interprocess::intersegment_ptr<T>(r, boost::interprocess::ipcdetail::dynamic_cast_tag()); } @@ -895,7 +895,7 @@ template<class T, class U> inline boost::interprocess::intersegment_ptr<T> reinterpret_pointer_cast(const boost::interprocess::intersegment_ptr<U> &r) { return boost::interprocess::intersegment_ptr<T>(r, boost::interprocess::ipcdetail::reinterpret_cast_tag()); } -//!Trait class to detect if an smart pointer has +//!Trait class to detect if an smart pointer has //!multi-segment addressing capabilities. template <class T> struct is_multisegment_ptr @@ -907,7 +907,7 @@ struct is_multisegment_ptr } //namespace interprocess { #if defined(_MSC_VER) && (_MSC_VER < 1400) -//!to_raw_pointer() enables boost::mem_fn to recognize intersegment_ptr. +//!to_raw_pointer() enables boost::mem_fn to recognize intersegment_ptr. //!Never throws. template<class T> inline T * to_raw_pointer(boost::interprocess::intersegment_ptr<T> const & p) @@ -918,14 +918,14 @@ T * to_raw_pointer(boost::interprocess::intersegment_ptr<T> const & p) //!for optimizations template <class T> struct has_trivial_constructor - < boost::interprocess::intersegment_ptr<T> > + < boost::interprocess::intersegment_ptr<T> > : public true_type{}; //!has_trivial_destructor<> == true_type specialization //!for optimizations template <class T> struct has_trivial_destructor - < boost::interprocess::intersegment_ptr<T> > + < boost::interprocess::intersegment_ptr<T> > : public true_type{}; } //namespace boost { @@ -950,7 +950,7 @@ struct has_trivial_destructor // std::size_t offset; //RELATIVE_SIZE_BITS = SIZE_T_BITS - -// MAX_SEGMENT_BITS - +// MAX_SEGMENT_BITS - // CTRL_BITS 10 10 //MAX_SEGMENT_SIZE = SIZE_T_BITS - ALIGN_BITS 20 52 |