Init
This commit is contained in:
55
cppdraft/ispanstream/cons.md
Normal file
55
cppdraft/ispanstream/cons.md
Normal file
@@ -0,0 +1,55 @@
|
||||
[ispanstream.cons]
|
||||
|
||||
# 31 Input/output library [[input.output]](./#input.output)
|
||||
|
||||
## 31.9 Span-based streams [[span.streams]](span.streams#ispanstream.cons)
|
||||
|
||||
### 31.9.4 Class template basic_ispanstream [[ispanstream]](ispanstream#cons)
|
||||
|
||||
#### 31.9.4.2 Constructors [ispanstream.cons]
|
||||
|
||||
[ð](#lib:basic_ispanstream,constructor)
|
||||
|
||||
`explicit basic_ispanstream(std::span<charT> s, ios_base::openmode which = ios_base::in);
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10455)
|
||||
|
||||
*Effects*: Initializes the base class withbasic_istream<charT, traits>(addressof(*sb*)) and *sb* withbasic_spanbuf<charT, traits>(s, which | ios_base::in) ([[spanbuf.cons]](spanbuf.cons "31.9.3.2 Constructors"))[.](#1.sentence-1)
|
||||
|
||||
[ð](#lib:basic_ispanstream,constructor_)
|
||||
|
||||
`basic_ispanstream(basic_ispanstream&& rhs);
|
||||
`
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10469)
|
||||
|
||||
*Effects*: Initializes the base class with std::move(rhs) and *sb* with std::move(rhs.*sb*)[.](#2.sentence-1)
|
||||
|
||||
Next, basic_istream<charT, traits>::set_rdbuf(addressof(*sb*)) is called
|
||||
to install the contained basic_spanbuf[.](#2.sentence-2)
|
||||
|
||||
[ð](#lib:basic_ispanstream,constructor__)
|
||||
|
||||
`template<class ROS> explicit basic_ispanstream(ROS&& s)
|
||||
`
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10483)
|
||||
|
||||
*Constraints*: ROS models ranges::[borrowed_range](range.range#concept:borrowed_range "25.4.2 Ranges [range.range]")[.](#3.sentence-1)
|
||||
|
||||
<ROS, std::span<charT>> && [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_to [concept.convertible]")<ROS, std::span<charT const>> is true[.](#3.sentence-2)
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10489)
|
||||
|
||||
*Effects*: Let sp be std::span<const charT>(std::forward<ROS>(s))[.](#4.sentence-1)
|
||||
|
||||
Equivalent to:basic_ispanstream(std::span<charT>(const_cast<charT*>(sp.data()), sp.size()))
|
||||
31
cppdraft/ispanstream/general.md
Normal file
31
cppdraft/ispanstream/general.md
Normal file
@@ -0,0 +1,31 @@
|
||||
[ispanstream.general]
|
||||
|
||||
# 31 Input/output library [[input.output]](./#input.output)
|
||||
|
||||
## 31.9 Span-based streams [[span.streams]](span.streams#ispanstream.general)
|
||||
|
||||
### 31.9.4 Class template basic_ispanstream [[ispanstream]](ispanstream#general)
|
||||
|
||||
#### 31.9.4.1 General [ispanstream.general]
|
||||
|
||||
[ð](#lib:basic_ispanstream)
|
||||
|
||||
namespace std {template<class charT, class traits = char_traits<charT>>class basic_ispanstream : public basic_istream<charT, traits> {public:using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; using off_type = typename traits::off_type; using traits_type = traits; // [[ispanstream.cons]](ispanstream.cons "31.9.4.2 Constructors"), constructorsexplicit basic_ispanstream(std::span<charT> s,
|
||||
ios_base::openmode which = ios_base::in);
|
||||
basic_ispanstream(const basic_ispanstream&) = delete;
|
||||
basic_ispanstream(basic_ispanstream&& rhs); template<class ROS> explicit basic_ispanstream(ROS&& s);
|
||||
|
||||
basic_ispanstream& operator=(const basic_ispanstream&) = delete;
|
||||
basic_ispanstream& operator=(basic_ispanstream&& rhs); // [[ispanstream.swap]](ispanstream.swap "31.9.4.3 Swap"), swapvoid swap(basic_ispanstream& rhs); // [[ispanstream.members]](ispanstream.members "31.9.4.4 Member functions"), member functions basic_spanbuf<charT, traits>* rdbuf() const noexcept;
|
||||
|
||||
std::span<const charT> span() const noexcept; void span(std::span<charT> s) noexcept; template<class ROS> void span(ROS&& s) noexcept; private: basic_spanbuf<charT, traits> *sb*; // *exposition only*};}
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10440)
|
||||
|
||||
[*Note [1](#note-1)*:
|
||||
|
||||
Constructing an ispanstream from a [*string-literal*](lex.string#nt:string-literal "5.13.5 String literals [lex.string]") includes the termination character '\0' in the underlying spanbuf[.](#1.sentence-1)
|
||||
|
||||
â *end note*]
|
||||
63
cppdraft/ispanstream/members.md
Normal file
63
cppdraft/ispanstream/members.md
Normal file
@@ -0,0 +1,63 @@
|
||||
[ispanstream.members]
|
||||
|
||||
# 31 Input/output library [[input.output]](./#input.output)
|
||||
|
||||
## 31.9 Span-based streams [[span.streams]](span.streams#ispanstream.members)
|
||||
|
||||
### 31.9.4 Class template basic_ispanstream [[ispanstream]](ispanstream#members)
|
||||
|
||||
#### 31.9.4.4 Member functions [ispanstream.members]
|
||||
|
||||
[ð](#lib:rdbuf,basic_ispanstream)
|
||||
|
||||
`basic_spanbuf<charT, traits>* rdbuf() const noexcept;
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10535)
|
||||
|
||||
*Effects*: Equivalent to:return const_cast<basic_spanbuf<charT, traits>*>(addressof(*sb*));
|
||||
|
||||
[ð](#lib:span,basic_ispanstream)
|
||||
|
||||
`std::span<const charT> span() const noexcept;
|
||||
`
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10549)
|
||||
|
||||
*Effects*: Equivalent to: return rdbuf()->span();
|
||||
|
||||
[ð](#lib:span,basic_ispanstream_)
|
||||
|
||||
`void span(std::span<charT> s) noexcept;
|
||||
`
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10560)
|
||||
|
||||
*Effects*: Equivalent to rdbuf()->span(s)[.](#3.sentence-1)
|
||||
|
||||
[ð](#itemdecl:4)
|
||||
|
||||
`template<class ROS> void span(ROS&& s) noexcept;
|
||||
`
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10570)
|
||||
|
||||
*Constraints*: ROS models ranges::[borrowed_range](range.range#concept:borrowed_range "25.4.2 Ranges [range.range]")[.](#4.sentence-1)
|
||||
|
||||
(<ROS, std::span<charT>>) && [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_to [concept.convertible]")<ROS, std::span<const charT>> is true[.](#4.sentence-2)
|
||||
|
||||
[5](#5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10576)
|
||||
|
||||
*Effects*: Let sp be std::span<const charT>(std::forward<ROS>(s))[.](#5.sentence-1)
|
||||
|
||||
Equivalent to:this->span(std::span<charT>(const_cast<charT*>(sp.data()), sp.size()));
|
||||
32
cppdraft/ispanstream/swap.md
Normal file
32
cppdraft/ispanstream/swap.md
Normal file
@@ -0,0 +1,32 @@
|
||||
[ispanstream.swap]
|
||||
|
||||
# 31 Input/output library [[input.output]](./#input.output)
|
||||
|
||||
## 31.9 Span-based streams [[span.streams]](span.streams#ispanstream.swap)
|
||||
|
||||
### 31.9.4 Class template basic_ispanstream [[ispanstream]](ispanstream#swap)
|
||||
|
||||
#### 31.9.4.3 Swap [ispanstream.swap]
|
||||
|
||||
[ð](#lib:swap,basic_ispanstream)
|
||||
|
||||
`void swap(basic_ispanstream& rhs);
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10506)
|
||||
|
||||
*Effects*: Equivalent to:basic_istream<charT, traits>::swap(rhs);*sb*.swap(rhs.*sb*);
|
||||
|
||||
[ð](#lib:swap,basic_ispanstream_)
|
||||
|
||||
`template<class charT, class traits>
|
||||
void swap(basic_ispanstream<charT, traits>& x, basic_ispanstream<charT, traits>& y);
|
||||
`
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L10522)
|
||||
|
||||
*Effects*: Equivalent to x.swap(y)[.](#2.sentence-1)
|
||||
Reference in New Issue
Block a user