1
1
#pragma once
2
2
3
+ #include < algorithm>
3
4
#include < filesystem>
4
5
#include < fstream>
5
6
#include < iostream>
6
7
#include < iterator>
7
8
#include < optional>
9
+ #include < span>
8
10
#include < string_view>
9
11
#include < vector>
10
12
11
13
#include < fmt/format.h>
12
- #include < gsl/gsl_assert>
13
- #include < gsl/span>
14
14
15
15
namespace pisa {
16
16
@@ -24,8 +24,8 @@ namespace detail {
24
24
using value_type = Payload_View;
25
25
using difference_type = std::make_signed_t <size_type>;
26
26
27
- typename gsl ::span<size_type const >::iterator offset_iter;
28
- typename gsl ::span<std::byte const >::iterator payload_iter;
27
+ typename std ::span<size_type const >::iterator offset_iter;
28
+ typename std ::span<std::byte const >::iterator payload_iter;
29
29
30
30
constexpr auto operator ++() -> Payload_Vector_Iterator& {
31
31
++offset_iter;
@@ -194,7 +194,7 @@ auto encode_payload_vector(InputIterator first, InputIterator last, PayloadEncod
194
194
}
195
195
196
196
template <typename Payload, typename PayloadEncodingFn>
197
- auto encode_payload_vector (gsl ::span<Payload const > values, PayloadEncodingFn encoding_fn) {
197
+ auto encode_payload_vector (std ::span<Payload const > values, PayloadEncodingFn encoding_fn) {
198
198
return encode_payload_vector (values.begin (), values.end (), encoding_fn);
199
199
}
200
200
@@ -207,13 +207,13 @@ auto encode_payload_vector(InputIterator first, InputIterator last) {
207
207
});
208
208
}
209
209
210
- inline auto encode_payload_vector (gsl ::span<std::string const > values) {
210
+ inline auto encode_payload_vector (std ::span<std::string const > values) {
211
211
return encode_payload_vector (values.begin (), values.end ());
212
212
}
213
213
214
214
template <typename ... T>
215
- constexpr auto unpack_head (gsl ::span<std::byte const > mem)
216
- -> std::tuple<T..., gsl ::span<std::byte const >> {
215
+ constexpr auto unpack_head (std ::span<std::byte const > mem)
216
+ -> std::tuple<T..., std ::span<std::byte const >> {
217
217
static_assert (detail::all_pod<T...>::value);
218
218
auto offset = detail::sizeofs<T...>::value;
219
219
if (offset > mem.size ()) {
@@ -223,10 +223,10 @@ constexpr auto unpack_head(gsl::span<std::byte const> mem)
223
223
}
224
224
auto tail = mem.subspan (offset);
225
225
auto head = detail::unpack<T...>(mem.data ());
226
- return std::tuple_cat (head, std::tuple<gsl ::span<std::byte const >>(tail));
226
+ return std::tuple_cat (head, std::tuple<std ::span<std::byte const >>(tail));
227
227
}
228
228
229
- [[nodiscard]] inline auto split (gsl ::span<std::byte const > mem, std::size_t offset) {
229
+ [[nodiscard]] inline auto split (std ::span<std::byte const > mem, std::size_t offset) {
230
230
if (offset > mem.size ()) {
231
231
throw std::runtime_error (
232
232
fmt::format (" Cannot split span of size {} at position {}" , mem.size (), offset)
@@ -236,14 +236,14 @@ constexpr auto unpack_head(gsl::span<std::byte const> mem)
236
236
}
237
237
238
238
template <typename T>
239
- [[nodiscard]] auto cast_span (gsl ::span<std::byte const > mem) -> gsl ::span<T const > {
239
+ [[nodiscard]] auto cast_span (std ::span<std::byte const > mem) -> std ::span<T const > {
240
240
auto type_size = sizeof (T);
241
241
if (mem.size () % type_size != 0 ) {
242
242
throw std::runtime_error (
243
243
fmt::format (" Failed to cast byte-span to span of T of size {}" , type_size)
244
244
);
245
245
}
246
- return gsl::make_span (reinterpret_cast <T const *>(mem.data ()), mem.size () / type_size);
246
+ return std::span (reinterpret_cast <T const *>(mem.data ()), mem.size () / type_size);
247
247
}
248
248
249
249
template <typename Payload_View = std::string_view>
@@ -257,17 +257,17 @@ class Payload_Vector {
257
257
explicit Payload_Vector (Payload_Vector_Buffer const & container)
258
258
: offsets_(container.offsets), payloads_(container.payloads) {}
259
259
260
- Payload_Vector (gsl ::span<size_type const > offsets, gsl ::span<std::byte const > payloads)
260
+ Payload_Vector (std ::span<size_type const > offsets, std ::span<std::byte const > payloads)
261
261
: offsets_(offsets), payloads_(payloads) {}
262
262
263
263
template <typename ContiguousContainer>
264
264
[[nodiscard]] constexpr static auto from (ContiguousContainer&& mem) -> Payload_Vector {
265
- return from (gsl::make_span (reinterpret_cast <std::byte const *>(mem.data ()), mem.size ()));
265
+ return from (std::span (reinterpret_cast <std::byte const *>(mem.data ()), mem.size ()));
266
266
}
267
267
268
- [[nodiscard]] static auto from (gsl ::span<std::byte const > mem) -> Payload_Vector {
268
+ [[nodiscard]] static auto from (std ::span<std::byte const > mem) -> Payload_Vector {
269
269
size_type length;
270
- gsl ::span<std::byte const > tail;
270
+ std ::span<std::byte const > tail;
271
271
try {
272
272
std::tie (length, tail) = unpack_head<size_type>(mem);
273
273
} catch (std::runtime_error const & err) {
@@ -276,7 +276,7 @@ class Payload_Vector {
276
276
);
277
277
}
278
278
279
- gsl ::span<std::byte const > offsets, payloads;
279
+ std ::span<std::byte const > offsets, payloads;
280
280
try {
281
281
std::tie (offsets, payloads) = split (tail, (length + 1U ) * sizeof (size_type));
282
282
} catch (std::runtime_error const & err) {
@@ -314,8 +314,8 @@ class Payload_Vector {
314
314
}
315
315
316
316
private:
317
- gsl ::span<size_type const > offsets_;
318
- gsl ::span<std::byte const > payloads_;
317
+ std ::span<size_type const > offsets_;
318
+ std ::span<std::byte const > payloads_;
319
319
};
320
320
321
321
// / Find the position of `value` in a sorted range.
@@ -339,7 +339,7 @@ auto binary_search(Iter begin, Iter end, T value, Compare cmp = std::less<>{})
339
339
// / It calls the function overload that takes iterators. See that overload's documentation for more
340
340
// / information.
341
341
template <typename T, typename Compare = std::less<T>>
342
- auto binary_search (gsl ::span<std::add_const_t <T>> range, T value, Compare cmp = std::less<T>{})
342
+ auto binary_search (std ::span<std::add_const_t <T>> range, T value, Compare cmp = std::less<T>{})
343
343
-> std::optional<std::ptrdiff_t> {
344
344
return pisa::binary_search (range.begin (), range.end (), value, cmp);
345
345
}
0 commit comments