Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
  • <
    attribute_value&operator=(attribute_valueconst&that)noexcept;
    >

    Копии

  • <
    attribute_value&operator=(attribute_value&&that)noexcept;
    >

    Переместить назначение

  • attribute_value public member functions

    1. <
      explicitoperatorbool()constnoexcept;
      >

      Оператор проверяет, пусто ли значение атрибута

    2. <
      booloperator!()constnoexcept;
      >

      Оператор проверяет, пусто ли значение атрибута

    3. <
      typeindex::type_indexget_type()const;
      >

      Способ возвращает информацию о типе сохраненного значения атрибута. Обертка обратного типа информации может быть пустой, если значение атрибута пустое или информация не может быть предоставлена. Если возвращенное значение не является пустым, тип может быть использован для извлечения стоимости.

    4. <
      voiddetach_from_thread();
      >

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

    Class attribute_value

    Boost , Chapter 1. Boost.Log v2 , Attributes

    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 attribute_value

    boost::log::attribute_value — An attribute value class.

    Synopsis

    // In header: <boost/log/attributes/attribute_value.hpp>
    
    class attribute_value {
    public:
      // member classes/structs/unions
      // A base class for an attribute value implementation.
      struct impl : public attribute::impl {
        // public member functions
        virtual bool dispatch(type_dispatcher &) = 0;
        virtual intrusive_ptr< impl > detach_from_thread();
        virtual attribute_value get_value();
        virtual typeindex::type_index get_type() const;
      };
      // construct/copy/destruct
      attribute_value() = default;
      attribute_value(attribute_value const &) noexcept;
      attribute_value(attribute_value &&) noexcept;
      explicit attribute_value(intrusive_ptr< impl >) noexcept;
      attribute_value & operator=(attribute_value const &) noexcept;
      attribute_value & operator=(attribute_value &&) noexcept;
      // public member functions
      explicit operator bool() const noexcept;
      bool operator!() const noexcept;
      typeindex::type_index get_type() const;
      void detach_from_thread();
      bool dispatch(type_dispatcher &) const;
      template<typename T, typename TagT = void> 
        result_of::extract< T, TagT >::type extract() const;
      template<typename T, typename TagT = void> 
        result_of::extract_or_throw< T, TagT >::type extract_or_throw() const;
      template<typename T, typename TagT = void> 
        result_of::extract_or_default< T, T, TagT >::type 
        extract_or_default(T const &) const;
      template<typename T, typename TagT = void, typename DefaultT> 
        result_of::extract_or_default< T, DefaultT, TagT >::type 
        extract_or_default(DefaultT const &) const;
      template<typename T, typename VisitorT> 
        visitation_result visit(VisitorT) const;
      void swap(attribute_value &) noexcept;
    };

    Description

    Значение атрибута - это объект, который содержит часть данных, которая представляет состояние атрибута в точке приобретения стоимости. Все основные операции с записями журналов, такие как фильтрация и форматирование, включают значения атрибутов, содержащиеся в одном представлении. Скорее всего, значение атрибута реализуется как простой держатель некоторой типизированной стоимости. Этот держатель реализует интерфейс<attribute_value::implementation>и действует как сутенер для объекта<attribute_value>. Класс<attribute_value>обеспечивает диспетчерскую поддержку типа, чтобы позволить извлекать значение из держателя.

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

    Однако бывают случаи, когда такой подход не помогает достичь требуемого уровня независимости значений атрибутов и отождествлять себя друг от друга при разумном компромиссе производительности. Например, атрибут или его значения могут использовать специфичные для потока данные, которые являются глобальными и распределяются между всеми экземплярами атрибута/значения. Передача такого атрибута другому потоку будет катастрофой. Для решения этой задачи библиотека определяет дополнительный метод для значений атрибутов, а именно<detach_from_thread>. Класс<attribute_value>перенаправляет вызов в свой сутенер, который должен гарантировать, что он больше не ссылается на какие-либо конкретные данные после вызова. В результате этого метода сутенер может создать новый держатель и вернуть его в обертку<attribute_value>, которая сохранит возвращенную ссылку для любых дальнейших вызовов. Этот метод называется для всех значений атрибутов, которые передаются в другую нить.

    attribute_value public construct/copy/destruct

    1. <
      attribute_value()=default;
      >

      Конструктор по умолчанию. Создает пустое (отсутствующее) атрибутное значение.

    2. <
      attribute_value(attribute_valueconst&that)noexcept;
      >

      Копировать конструктор

    3. <
      attribute_value(attribute_value&&that)noexcept;
      >

      Переместить конструктор

    4. <
      explicitattribute_value(intrusive_ptr<impl>p)noexcept;
      >

      Начало строительства. Создает значение атрибута, которое относится к указанному держателю.

    Параметры:

    <p>

    Указатель на держатель значения атрибута.

    Пост-условия:

    Значение атрибута больше не относится к каким-либо нитевидным ресурсам.

  • <
    booldispatch(type_dispatcher&dispatcher)const;
    >

    Метод направляет значение на данный объект. Этот метод представляет собой интерфейс низкого уровня для посещения и извлечения значения атрибута. Для обычного использования эти интерфейсы могут быть более удобными.

    Параметры:

    <dispatcher>

    Объект, который пытается отправить сохраненное значение.

    Возврат:

    <true>, если значение не является пустым идиспетчербыл способен потреблять реальный тип значения атрибута и<false>в противном случае.

  • 171

    Способ пытается извлечь сохраненное значение, предполагая, что значение имеет указанный тип. Можно указать либо один тип, либо последовательность типа MPL, и в этом случае сохраненное значение проверяется по каждому типу в последовательности.

    [Note]Примечание

    Включить<value_extraction.hpp>до использования этого метода.

    Возвращение:

    Извлеченное значение, если значение атрибута не пустое и значение такое же, как указанное. В противном случае возвращается пустое значение. См. описание<result_of::extract>метафункции для информации о природе значения результата.

  • <
    template<typenameT,typenameTagT=void>
     result_of::extract_or_throw<T,TagT>::typeextract_or_throw()const;
    >

    Способ пытается извлечь сохраненное значение, предполагая, что значение имеет указанный тип. Можно указать либо один тип, либо последовательность типа MPL, и в этом случае сохраненное значение проверяется по каждому типу в последовательности.

    [Note]
    Примечание

    Включить<value_extraction.hpp>до использования этого метода.

    Возврат:

    Извлеченное значение, если значение атрибута не пустое и значение такое же, как указанное. В противном случае выбрасывается исключение. См. описание<result_of::extract_or_throw>метафункции для информации о природе значения результата.

  • <
    template<typenameT,typenameTagT=void>
     result_of::extract_or_default<T,T,TagT>::type
     extract_or_default(Tconst&def_value)const;
    >

    Способ пытается извлечь сохраненное значение, предполагая, что значение имеет указанный тип. Можно указать либо один тип, либо последовательность типа MPL, и в этом случае сохраненное значение проверяется по каждому типу в последовательности. Если извлечение не удается, значение по умолчанию возвращается.

    [Note]Примечание

    Включить<value_extraction.hpp>до использования этого метода.

    Параметры:

    <def_value>

    Значение по умолчанию.

    Возврат:

    [ Извлеченное значение, если значение атрибута не пустое и значение такое же, как указанное. В противном случае возвращается значение по умолчанию. См. описание<result_of::extract_or_default>метафункции для информации о природе значения результата.

  • <
    template<typenameT,typenameTagT=void,typenameDefaultT>
     result_of::extract_or_default<T,DefaultT,TagT>::type
     extract_or_default(DefaultTconst&def_value)const;
    >

    Способ пытается извлечь сохраненное значение, предполагая, что значение имеет указанный тип. Можно указать либо один тип, либо последовательность типа MPL, и в этом случае сохраненное значение проверяется по каждому типу в последовательности. Если извлечение не удается, значение по умолчанию возвращается.

    [Note]Примечание

    Включить<value_extraction.hpp>до использования этого метода.

    Параметры:

    По умолчанию.

    Возвращение:

    Извлеченное значение, если значение атрибута не пустое и значение такое же, как указанное. В противном случае возвращается значение по умолчанию. См. описание<result_of::extract_or_default>метафункции для информации о характере значения результата.

  • <
    template<typenameT,typenameVisitorT>
     visitation_resultvisit(VisitorTvisitor)const;
    >

    Способ пытается извлечь сохраненное значение, предполагая, что значение имеет указанный тип, и передать его объекту функциипосетителя. Можно указать либо один тип, либо последовательность типа MPL, и в этом случае сохраненное значение проверяется по каждому типу в последовательности.

    [Note]Примечание

    Включить<value_visitation.hpp>до использования этого метода.

    Параметры:

    <visitor>

    Объект функции, который будет вызываться на извлеченное значение атрибута. Посетитель должен быть в состоянии быть вызван с одним аргументом любого типа указанных типов в<T>.

    Возвращение:

    Результат посещения

  • <
    voidswap(attribute_value&that)noexcept;
    >

    Способ своп двух значений атрибутов


  • PrevUpHomeNext

    Статья Class attribute_value раздела Chapter 1. Boost.Log v2 Attributes может быть полезна для разработчиков на c++ и boost.




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



    :: Главная :: Attributes ::


    реклама


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

    Время компиляции файла: 2024-08-30 11:47:00
    2025-07-04 22:46:57/0.0084490776062012/0