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

Boolean Generators (bool_)

Boost , Spirit 2.5.2 , Numeric Generators

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
Description

Как вы можете ожидать, bool_generator может генерировать выход из боуловых значений. Генератор bool_generator может быть использован для получения выходной информации от обычного примитивного C/C++ bool значения или пользователь, определяемые как boolean типы, если тип соответствует определенным требованиям экспрессии (более подробную информацию о требованиях см. below). bool_generator - это класс шаблонов. Параметры шаблона тонко настраивают его поведение.

Header
// forwards to <boost/spirit/home/karma/numeric/bool.hpp>
#include <boost/spirit/include/karma_bool.hpp>

Также см. Include Structure.

Namespace

Имя

boost::spirit::lit // alias: boost::spirit::karma::lit

boost::spirit::bool_ // alias: rise::cpirit::karma::bool_

boost::spirit::true_ // alias: boost::spirit::karma::true_

boost::spirit::false_ // alias: boost::spirit::karma::false_

[Note]Note

lit повторно используется String Generators, Character Generators и Numeric Generators. В целом, генератор шаров создается, когда вы проходите в символе, когда вы проходите в строке, создается струнный генератор, а цифровой генератор создается при использовании числового (булеанского) буквального.

Synopsis
template <
    typename B
  , unsigned Policies>
struct bool_generator;
Template parameters

Параметр

Описание

По умолчанию

B

bool

Policies

bool_policies<B>

Model of

Notation

b

B

Тип b: любой тип, пригодный для использования в качестве бульона, или в случае Задний Аргумент, его значение возврата

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определяется в PrimitiveGenerator.

Выражение

Семантика

lit(b)

Создание булевых буквальных b с использованием форматирования по умолчанию (false генерируется как "false", и true<34> генерируется как "true". Этот генератор никогда не терпит неудачу (если основной поток вывода не сообщает об ошибке).

bool_<4

Создание боолеинового значения, обеспечиваемого обязательным атрибутом с использованием форматирования по умолчанию (false генерируется как "false", и True генерируется как True". Этот генератор никогда не терпит неудачу (если основной поток вывода не сообщает об ошибке).

bool_(b)

Создание боолеинового значения, обеспечиваемого непосредственным буквальным значением, генератор инициализируется с использованием форматирования по умолчанию (false генерируется как "false", а True генерируется как "true"). Если этот генератор имеет ассоциированный атрибут, он преуспевает только в том случае, если атрибут равен непосредственному буквальному (если только основной поток вывода не сообщает об ошибке). В противном случае этот генератор терпит неудачу и не генерирует никакого вывода.

true_

"true". Если этот генератор имеет ассоциированный атрибут, он преуспевает только если атрибут true также (если только основной поток вывода не сообщает об ошибке).

false_

"false". Если этот генератор имеет ассоциированный атрибут, он преуспевает только если атрибут false также (если только основной поток вывода не сообщает об ошибке).

Все генераторы, перечисленные в таблице выше (за исключением lit(num)) являются предопределенными специализациями bool_generator<B, Policies> основной тип боролеанователя описан ниже. Можно напрямую использовать этот тип для создания булевых генераторов с использованием широкого спектра вариантов форматирования.

Выражение

Семантика

bool_generator<
    B, Policies
>()

bool_generator<
    B, Policies
>()

[ORIG_END] -->
Policies Этот генератор никогда (если только основной поток вывода не сообщает об ошибке).

bool_generator<
    B, Policies
>()(b)

Создайте боолеан типа B, обеспечиваемый непосредственным буквальным значением, из которого инициализируется генератор, используя указанные Политики. Если этот генератор имеет ассоциированный атрибут, он преуспевает только в том случае, если атрибут равен непосредственному буквальному (если только основной поток вывода не сообщает об ошибке). В противном случае этот генератор терпит неудачу и не генерирует никакого вывода.

[Note]Note

Все булевые генераторы должным образом уважают директивы upper и lower.

Additional Requirements

В следующих списках перечислены требования, которые должны быть выполнены для использования определенного типа B для обработки и использования bool_generator<B, Policies>.

Тип B:

Attributes

Выражение

Attribute

bool_(b)

unused

bool_<4

bool, атрибут является обязательным (в противном случае компиляция потерпит неудачу)

bool_(b)

bool, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с b и преуспевает только в том случае, если оба равны, не в противном случае.

bool_generator<
    B, Policies
>()

bool_generator<
    B, Policies
>()

[ORIG_END] -->

B, атрибут является обязательным (в противном случае сборник потерпит неудачу)

bool_generator<
    B, Policies
>()(b)

B, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с b и преуспевает только в том случае, если оба равны, в противном случае.

[Note]Note

В дополнение к их обычному атрибуту типа B все перечисленные генераторы принимают экземпляр boost::факультативно<B>. Если boost::факультативно< инициализируется (оставляется значение) генераторы ведут себя так, как будто их атрибут был экземпляром B и испускают значение, хранящееся в boost::факультативно<>. Иначе генераторы потерпят неудачу.

Boolean Formatting Policies

Если требуется специальное форматирование боролаана, перегрузите класс политики bool_policies<B> и используйте его в качестве параметра шаблона для bool_generator< boolean-генератора. Например:

struct special_bool_policy : karma::bool_policies<>
{
    template <typename CharEncoding, typename Tag
      , typename OutputIterator>
    static bool generate_false(OutputIterator& sink, bool b)
    {
        // we want to spell the names of false as eurt (true backwards)
        return string_inserter<CharEncoding, Tag>::call(sink, "eurt");
    }
};
typedef karma::bool_generator<special_bool_policy> backwards_bool_type;
backwards_bool_type const backwards_bool;
karma::generate(sink, backwards_bool, true);    // will output: true
karma::generate(sink, backwards_bool(false));   // will output: uert

Параметр шаблона B должен быть типом, который должен быть отформатирован с использованием перегруженного типа политики. В то же время B будет использоваться как тип атрибута создаваемого генератора реального числа. По умолчанию для B является bool.

Boolean Formatting Policy Expression Semantics

Политика буллингового форматирования должна выявить следующее:

Выражение

Описание

template <typename Inserter
  , typename OutputIterator
  , typename Policies>
bool call (OutputIterator& sink, Num n
  , Policies const& p);

template <typename Inserter
  , typename OutputIterator
  , typename Policies>
bool call (OutputIterator& sink, Num n
  , Policies const& p);

[ORIG_END] -->
template <typename Inserter, typename OutputIterator
  , typename Policies>
static bool
call (OutputIterator& sink, B b, Policies const& p)
{
    return Inserter::call_n(sink, b, p);
}

sink это выходный итератор для использования для генерации

b это булеан конвертировать

p - это экземпляр типа политики, используемого для мгновенных данных генератора реального числа.

template <typename Inserter, typename OutputIterator
  , typename Policies>
static bool
call (OutputIterator& sink, B b, Policies const& p)
{
    return Inserter::call_n(sink, b, p);
}

sink is the output iterator to use for generation

b is the boolean to convert

p is the instance of the policy type used to instantiate this real number generator.

[ORIG_END] -->

template <typename CharEncoding,
    typename Tag, typename OutputIterator>
bool generate_false(
    OutputIterator& sink, B b);

Эта функция называется для создания булеана, если это false.

sink является выходным итератором для использования для поколения

b является боолеан для преобразования (значение false).

Параметры шаблона CharEncoding и Tag либо относятся к типу неиспользуемый_type, либо описывают класс символов и конверсию, которые могут быть применены к любому выходу, возможно, под влиянием lower<338>[] или upper<338>[3><4 директивы>.

Значение возврата определяет исход всего генератора.

template <typename CharEncoding,
    typename Tag, typename OutputIterator>
bool generate_true(
    OutputIterator& sink, B b);

sink это выходный итератор для использования для генерации

b это булеан конвертировать (значение true).

Параметры шаблона CharEncoding и Tagunused_type или описать класс символов и конверсию для применения на любой выход, возможно под влиянием либо lower[] или upper[] директивы.

Значение возврата определяет исход всего генератора.

Complexity

O(N), где N - это количество символов, необходимых для представления сгенерированного булеана.

Example
[Note]Note

Испытательный узел для примера (примеров) ниже представлен в разделе Basics examples.

Некоторые из них включают:

#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/support_utree.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/fusion/include/std_pair.hpp>
#include <iostream>
#include <string>

Некоторые используют заявления:

using boost::spirit::karma::bool_;
using boost::spirit::karma::lit;

Основное использование генератора bool_:

test_generator("true", lit(true));
test_generator("false", bool_(false));
test_generator_attr("true", bool_(true), true);
test_generator_attr("", bool_(true), false);    // fails (as true != false)!
test_generator_attr("false", bool_, false);


PrevUpHomeNext

Статья Boolean Generators (bool_) раздела Spirit 2.5.2 Numeric Generators может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Numeric Generators ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:44:30/0.03230094909668/1