123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <chapter xml:id="writers">
- <title><tt>__vic/writers/</tt></title>
- <chapter xml:id="writer-concept">
- <title><tt>Writer</tt> concept</title>
- <code-block lang="C++"><![CDATA[
- template<class ElementT>
- class ]]><nt>Writer</nt><![CDATA[
- {
- public:
- Writer(Writer &&o); or Writer(const Writer &o);
- void write(ElementT v); // throws on errors
- };
- ]]></code-block>
- <p>Concept, используемый алгоритмами библиотеки для поэлементной записи
- логической последовательности элементов типа <tt>ElementT</tt>. Является
- обобщением и переработкой concept'а <tt>OutputIterator</tt>. В частности,
- он лучше обрабатывает потоки ввода/вывода и другие последовательности, в
- которых <tt>end</tt>-итератор не имеет смысла или его получение дорого. В то
- же время, традиционные выходные итераторы являются частным просто случаем и
- полностью поддерживаются адаптером <tt>__vic::iterator_writer</tt>.</p>
- <p>В случаях, когда конкретный класс удовлетворяет требованиям данного concept
- для некоторого <tt>ElementT = T</tt>, говорят, что он <b>моделирует</b> concept
- <tt>Writer<T></tt>.</p>
- <p>Каждый экземпляр класса должен быть move- или copy-constructible.</p>
- <section><title>Члены класса</title>
- <synopsis>
- <prototype>void write(ElementT v)</prototype>
- <p>Записывает элемент или бросает исключение в случае ошибки.</p>
- </synopsis>
- </section>
- </chapter>
- <chapter xml:id="null_writer">
- <title><tt>null_writer</tt></title>
- <code-block lang="C++"><![CDATA[
- #include<__vic/writers/null.h>
- class null_writer
- {
- public:
- template<class T> void write(T v) {}
- };
- null_writer make_null_writer();
- ]]></code-block>
- <p>Фиктивный writer, принимающий любые значения и никуда их не выводящий (как
- <tt>/dev/null</tt> в UNIX).</p>
- </chapter>
- <chapter xml:id="push_back_writer">
- <title><tt>push_back_writer</tt></title>
- <code-block lang="C++"><![CDATA[
- #include<__vic/writers/push_back.h>
- template<class Cont, class T = typename Cont::value_type>
- class push_back_writer
- {
- public:
- explicit push_back_writer(Cont &c);
- void write(T v) { c->push_back(v); }
- };
- template<class Cont>
- push_back_writer<Cont> make_push_back_writer(Cont &c);
- template<class T, class Cont>
- push_back_writer<Cont,T> make_push_back_writer_for(Cont &c);
- ]]></code-block>
- <p>Адаптер. Использует функцию-член <tt>push_back()</tt> для записи элементов.
- Может быть создан с помощью конструктора или одной из функций <tt>make_...</tt>.
- </p>
- </chapter>
- <chapter xml:id="iterator_writer">
- <title><tt>iterator_writer</tt></title>
- <code-block lang="C++"><![CDATA[
- #include<__vic/writers/iterator.h>
- template<class OutputIterator,
- class T = typename std::iterator_traits<OutputIterator>::value_type>
- class iterator_writer
- {
- public:
- explicit iterator_writer(OutputIterator it);
- void write(T v);
- };
- template<class OutputIterator>
- iterator_writer<OutputIterator> make_iterator_writer(OutputIterator it);
- template<class T, class OutputIterator>
- iterator_writer<OutputIterator,T> make_iterator_writer_for(OutputIterator it);
- ]]></code-block>
- <p>Записывает элементы в выходной итератор. Может быть создан с помощью
- конструктора или одной из функций <tt>make_...</tt>.</p>
- </chapter>
- <chapter xml:id="string_writer">
- <title><tt>string_writer</tt></title>
- <code-block lang="C++"><![CDATA[
- #include<__vic/writers/string.h>
- template<
- class charT,
- class Tr = std::char_traits<charT>,
- class Al = std::allocator<charT>
- >
- class basic_string_writer
- {
- public:
- explicit basic_string_writer(std::basic_string<charT,Tr,Al> &s);
- void write(charT ch);
- };
- using string_writer = basic_string_writer<char>;
- template<class charT, class Tr, class Al>
- basic_string_writer<charT,Tr,Al>
- make_string_writer(std::basic_string<charT,Tr,Al> &s);
- ]]></code-block>
- <p>Адаптер для <tt>std::basic_string</tt>. Может быть создан с помощью
- конструктора или функции <tt>make_...</tt>.</p>
- </chapter>
- <chapter xml:id="cstream_writer">
- <title><tt>cstream_writer</tt></title>
- <code-block lang="C++"><![CDATA[
- #include<__vic/writers/cstream.h>
- class cstream_writer
- {
- public:
- explicit cstream_writer(std::FILE *fp);
- void write(char ch) { __vic::write(fp, ch); }
- };
- cstream_writer make_cstream_writer(std::FILE *fp);
- ]]></code-block>
- <p>Моделирует <tt>Writer<char></tt> для <tt>std::FILE</tt>. Может быть
- создан с помощью конструктора или функции <tt>make_...</tt>.</p>
- </chapter>
- </chapter>
|