Skip to content

Commit 44743c8

Browse files
committed
Cleanup <spanstream>
1 parent 224e333 commit 44743c8

File tree

2 files changed

+63
-8
lines changed

2 files changed

+63
-8
lines changed

libcxx/include/spanstream

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ protected:
237237
}
238238

239239
private:
240-
ios_base::openmode __mode_; // exposition only
241-
std::span<_CharT> __buf_; // exposition only
240+
ios_base::openmode __mode_;
241+
std::span<_CharT> __buf_;
242242
};
243243

244244
template <class _CharT, class _Traits>
@@ -316,7 +316,7 @@ public:
316316
}
317317

318318
private:
319-
basic_spanbuf<_CharT, _Traits> __sb_; // exposition only
319+
basic_spanbuf<_CharT, _Traits> __sb_;
320320
};
321321

322322
template <class _CharT, class _Traits>
@@ -379,7 +379,7 @@ public:
379379
_LIBCPP_HIDE_FROM_ABI void span(std::span<_CharT> __s) noexcept { rdbuf()->span(__s); }
380380

381381
private:
382-
basic_spanbuf<_CharT, _Traits> __sb_; // exposition only
382+
basic_spanbuf<_CharT, _Traits> __sb_;
383383
};
384384

385385
template <class _CharT, class _Traits>
@@ -440,7 +440,7 @@ public:
440440
_LIBCPP_HIDE_FROM_ABI void span(std::span<_CharT> __s) noexcept { rdbuf()->span(__s); }
441441

442442
private:
443-
basic_spanbuf<_CharT, _Traits> __sb_; // exposition only
443+
basic_spanbuf<_CharT, _Traits> __sb_;
444444
};
445445

446446
template <class _CharT, class _Traits>

libcxx/test/std/input.output/span.streams/ospanstream/inherited.stream.ops.pass.cpp

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
#include <spanstream>
2222
#include <string>
2323
#include <string_view>
24+
#include <vector>
25+
26+
#include <print>
2427

2528
#include "constexpr_char_traits.h"
2629
#include "test_macros.h"
@@ -40,11 +43,11 @@ void test() {
4043
// Create a std::span test value
4144
CharT arr[arrSize]{};
4245
initialize_array_from_string_view(arr, sv);
43-
44-
std::span<CharT> sp{arr};
46+
std::vector<CharT> vec(arr, arr + arrSize);
4547

4648
// `std::span` + Mode: default (`out`)
4749
{
50+
std::span<CharT> sp{arr};
4851
SpStream spSt(sp);
4952

5053
assert(spSt);
@@ -59,13 +62,65 @@ void test() {
5962
assert(!spSt.bad());
6063
assert(!spSt.fail());
6164
assert(spSt.good());
65+
assert(spSt.span().size() == 0);
66+
}
67+
{
68+
std::span<CharT> sp{arr};
69+
SpStream spSt(sp);
70+
71+
assert(spSt);
72+
assert(!spSt.bad());
73+
assert(!spSt.fail());
74+
assert(spSt.good());
75+
assert(spSt.span().size() == 0);
76+
77+
spSt << 10;
78+
79+
assert(spSt.span().size() == 2);
80+
81+
spSt.clear();
82+
83+
// assert(spSt);
84+
// assert(!spSt.bad());
85+
// assert(!spSt.fail());
86+
// assert(spSt.good());
87+
// assert(spSt.span().size() == 0);
88+
89+
spSt << SV("gh");
90+
assert(spSt.span().size() == 4);
91+
std::println(stderr, "{}", spSt.span()[0]);
92+
std::println(stderr, "{}", arr[0]);
93+
assert(spSt.span()[0] == '1');
94+
assert(arr[0] == '1');
95+
assert(spSt.span()[1] == '0');
96+
assert(arr[1] == '0');
97+
assert(spSt.span()[2] == 'g');
98+
assert(arr[2] == 'g');
99+
100+
CharT output_buffer[30];
101+
std::basic_ospanstream<CharT, TraitsT> os{std::span<CharT>{output_buffer}};
102+
103+
assert(os.good());
104+
assert(!os.fail());
105+
assert(!os.bad());
106+
os << 10 << 20 << 30;
107+
os << SV("GH");
108+
assert(os.good());
109+
assert(!os.fail());
110+
assert(!os.bad());
111+
std::println(stderr, "{}", os.span()[0]);
112+
std::println(stderr, "{}", output_buffer[0]);
113+
std::println(stderr, "{}", os.span().size());
114+
std::println(stderr, "{}", os.span()[6]);
115+
std::println(stderr, "{}", output_buffer[7]);
116+
assert(false);
62117
}
63118
}
64119

65120
int main(int, char**) {
66121
test<char>();
67122
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
68-
test<wchar_t>();
123+
// test<wchar_t>();
69124
#endif
70125

71126
return 0;

0 commit comments

Comments
 (0)