Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template offset_ptr

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Indexes and Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template offset_ptr

boost::interprocess::offset_ptr

Synopsis

// In header: <boost/interprocess/offset_ptr.hpp>
template<typename PointedType, typename DifferenceType, typename OffsetType, 
         std::size_t OffsetAlignment> 
class offset_ptr {
public:
  // types
  typedef PointedType                     element_type;     
  typedef PointedType *                   pointer;          
  typedef unspecified                     reference;        
  typedef unspecified                     value_type;       
  typedef DifferenceType                  difference_type;  
  typedef std::random_access_iterator_tag iterator_category;
  typedef OffsetType                      offset_type;      
  // member classes/structs/unions
  template<typename U> 
  struct rebind {
    // types
    typedef offset_ptr< U, DifferenceType, OffsetType, OffsetAlignment > other;
  };
  // construct/copy/destruct
  offset_ptr() noexcept;
  offset_ptr(pointer) noexcept;
  template<typename T> offset_ptr(T *, unspecified = 0) noexcept;
  offset_ptr(const offset_ptr &) noexcept;
  template<typename T2> 
    offset_ptr(const offset_ptr< T2, DifferenceType, OffsetType, OffsetAlignment > &) noexcept;
  template<typename T2, typename P2, typename O2, std::size_t A2> 
    offset_ptr(const offset_ptr< T2, P2, O2, A2 > &, unspecified) noexcept;
  template<typename T2, typename P2, typename O2, std::size_t A2> 
    offset_ptr(const offset_ptr< T2, P2, O2, A2 > &, unspecified) noexcept;
  template<typename T2, typename P2, typename O2, std::size_t A2> 
    offset_ptr(const offset_ptr< T2, P2, O2, A2 > &, unspecified) noexcept;
  template<typename T2, typename P2, typename O2, std::size_t A2> 
    offset_ptr(const offset_ptr< T2, P2, O2, A2 > &, unspecified) noexcept;
  offset_ptr & operator=(pointer) noexcept;
  offset_ptr & operator=(const offset_ptr &) noexcept;
  template<typename T2> 
    offset_ptr & 
    operator=(const offset_ptr< T2, DifferenceType, OffsetType, OffsetAlignment > &) noexcept;
  // public member functions
  pointer get() const noexcept;
  offset_type get_offset() const noexcept;
  pointer operator->() const noexcept;
  reference operator*() const noexcept;
  reference operator[](difference_type) const noexcept;
  offset_ptr & operator+=(difference_type) noexcept;
  offset_ptr & operator-=(difference_type) noexcept;
  offset_ptr & operator++(void) noexcept;
  offset_ptr operator++(int) noexcept;
  offset_ptr & operator--(void) noexcept;
  offset_ptr operator--(int) noexcept;
  explicit operator bool() const noexcept;
  bool operator!() const noexcept;
  // public static functions
  static offset_ptr pointer_to(reference) noexcept;
  // friend functions
  friend offset_ptr operator+(difference_type, offset_ptr) noexcept;
  friend offset_ptr operator+(offset_ptr, difference_type) noexcept;
  friend offset_ptr operator-(offset_ptr, difference_type) noexcept;
  friend offset_ptr operator-(difference_type, offset_ptr) noexcept;
  friend difference_type 
  operator-(const offset_ptr &, const offset_ptr &) noexcept;
  // private member functions
  template<typename T2> 
    void assign(const offset_ptr< T2, DifferenceType, OffsetType, OffsetAlignment > &, 
                unspecified) noexcept;
  template<typename T2> 
    void assign(const offset_ptr< T2, DifferenceType, OffsetType, OffsetAlignment > &, 
                unspecified) noexcept;
};

Description

Умный указатель, который хранит смещение между указателем и объектом, который он указывает. Это позволяет смещение допускает особые свойства, поскольку указатель независим от адреса указателя, если указатель и указатель по-прежнему разделены одним и тем же смещением. Эта функция преобразуетoffset_ptrв интеллектуальный указатель, который может быть размещен в общей памяти и отображаемых в памяти файлах, отображаемых в разных адресах в каждом процессе.

b>Примечание:offset_ptrиспользует определенные свойства реализации, присутствующие в большинстве платформ, по причинам производительности:

  • Предположим, что представление uintptr_t nullptr равно нулю.

  • Предполагается, что инкрементирование uintptr_t, полученного из указателя, эквивалентно инкрементированию указателя, а затем преобразованию его обратно в uintptr_t.

Template Parameters

  1. typenamePointedType

    Тип указателя.

  2. <
    typenameDifferenceType
    >

    Знаковый целочисленный тип, который может представлять арифметические операции на указателе

  3. <
    typenameOffsetType
    >

    Неподписанный целочисленный тип, который может представлять расстояние между двумя указателями, переинтерпретируемыми как неподписанные целые числа. Этот тип должен быть, по крайней мере, того же размера std::uintptr_t. В некоторых системах возможно взаимодействие между 32- и 64-битными процессами с использованием 64-битных смещений.

  4. <
    std::size_tOffsetAlignment
    >

    Выравнивание типа Offset, хранящегося внутри. В некоторых системах может потребоваться выровнять его до 64 бит, чтобы передавать 32- и 64-битные процессы с использованием 64-битных смещений.

offset_ptr public construct/copy/destruct

  1. offset_ptr()noexcept;

    Конструктор по умолчанию (нулевой указатель). Никогда не бросай.

  2. offset_ptr(pointerptr)noexcept;

    Конструктор из необработанного указателя (позволяет конвертировать указатель «0»). Никогда не бросай.

  3. <
    template<typenameT>offset_ptr(T*ptr,unspecified=0)noexcept;
    >

    Конструктор из другого указателя. Никогда не бросай.

  4. <
    offset_ptr(constoffset_ptr&ptr)noexcept;
    >

    Конструктор из других<offset_ptr>Никогда не бросает.

  5. <
    template<typenameT2>
     offset_ptr(constoffset_ptr<T2,DifferenceType,OffsetType,OffsetAlignment>&ptr)noexcept;
    >

    Конструктор из других<offset_ptr>. Если указатели типов указателей являются конвертируемыми, то кабриолетами будут являться offset_ptrs. Никогда не бросай.

  6. template<typenameT2,typenameP2,typenameO2,std::size_tA2>
     offset_ptr(constoffset_ptr<T2,P2,O2,A2>&r,unspecified)noexcept;

    Эмулирует оператора static_cast. Никогда не бросай.

  7. template<typenameT2,typenameP2,typenameO2,std::size_tA2>
     offset_ptr(constoffset_ptr<T2,P2,O2,A2>&r,unspecified)noexcept;

    Эмулирует оператора const_cast. Никогда не бросай.

  8. <
    template<typenameT2,typenameP2,typenameO2,std::size_tA2>
     offset_ptr(constoffset_ptr<T2,P2,O2,A2>&r,unspecified)noexcept;
    >

    Эмулирует оператора Dynamic_cast. Никогда не бросай.

  9. template<typenameT2,typenameP2,typenameO2,std::size_tA2>
     offset_ptr(constoffset_ptr<T2,P2,O2,A2>&r,unspecified)noexcept;

    Эмулирует оператора reinterpret_cast. Никогда не бросай.

  10. offset_ptr&operator=(pointerfrom)noexcept;

    Назначение из указателя (сохраняет дополнительное преобразование). Никогда не бросай.

  11. <
    offset_ptr&operator=(constoffset_ptr&ptr)noexcept;
    >

    Уступка от других<offset_ptr>. Никогда не бросай.

  12. <
    template<typenameT2>
     offset_ptr&
     operator=(constoffset_ptr<T2,DifferenceType,OffsetType,OffsetAlignment>&ptr)noexcept;
    >

    Назначение из родственных<offset_ptr>. Если указатели типов указателей могут быть назначены, то можно будет назначить offset_ptrs. Никогда не бросай.

offset_ptr public member functions

  1. <
    pointerget()constnoexcept;
    >

    Получает необработанный указатель от смещения. Никогда не бросай.

  2. <
    offset_typeget_offset()constnoexcept;
    >
  3. pointeroperator->()constnoexcept;

    Пойнтер-подобный —>оператор. Он может вернуть 0 баллов. Никогда не бросай.

  4. <
    referenceoperator*()constnoexcept;
    >

    Отклонение оператора, если это нулевое<offset_ptr>поведение не определено. Никогда не бросай.

  5. <
    referenceoperator[](difference_typeidx)constnoexcept;
    >

    Оператор индексации. Никогда не бросай.

  6. <
    offset_ptr&operator+=(difference_typeoffset)noexcept;
    >

    <offset_ptr>+=разница_тип. Никогда не бросай.

  7. <
    offset_ptr&operator-=(difference_typeoffset)noexcept;
    >

    <offset_ptr>— = разница_тип. Никогда не бросай.

  8. <
    offset_ptr&operator++(void)noexcept;
    >

    ++offset_ptr. Никогда не бросай.

  9. <
    offset_ptroperator++(int)noexcept;
    >

    offset_ptr++. Никогда не бросай.

  10. offset_ptr&operator--(void)noexcept;

    & #8211;offset_ptr. Никогда не бросай.

  11. <
    offset_ptroperator--(int)noexcept;
    >

    <offset_ptr>и #8211; Никогда не бросай.

  12. <
    explicitoperatorbool()constnoexcept;
    >

    Безопасный конверсионный оператор. Никогда не бросай.

  13. <
    booloperator!()constnoexcept;
    >

    Не оператор. Не требуется в теории, но улучшает переносимость. Никогда не бросайте

offset_ptr public static functions

  1. <
    staticoffset_ptrpointer_to(referencer)noexcept;
    >

    Совместимость с pointer_traits

offset_ptr friend functions

  1. friendoffset_ptroperator+(difference_typediff,offset_ptrright)noexcept;

    разница_тип +offset_ptrоперация

  2. friendoffset_ptroperator+(offset_ptrleft,difference_typediff)noexcept;

    offset_ptr+ разность_тип операции

  3. friendoffset_ptroperator-(offset_ptrleft,difference_typediff)noexcept;

    offset_ptr- дифф-операция

  4. friendoffset_ptroperator-(difference_typediff,offset_ptrright)noexcept;

    offset_ptr- дифф-операция

  5. <
    frienddifference_type
    operator-(constoffset_ptr&pt,constoffset_ptr&pt2)noexcept;
    >

    <offset_ptr>-<offset_ptr>операция

offset_ptr private member functions

  1. <
    template<typenameT2>
     voidassign(constoffset_ptr<T2,DifferenceType,OffsetType,OffsetAlignment>&ptr,
                 unspecified)noexcept;
    >
  2. <
    template<typenameT2>
     voidassign(constoffset_ptr<T2,DifferenceType,OffsetType,OffsetAlignment>&ptr,
                 unspecified)noexcept;
    >

PrevUpHomeNext

Статья Class template offset_ptr раздела The Boost C++ Libraries BoostBook Documentation Subset Indexes and Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Indexes and Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:56:07/0.0086672306060791/0