33#include < cassert>
44#include < concepts> // IWYU pragma: keep
55#include < type_traits>
6- #include < variant>
76
87#include < openvic-dataloader/NodeLocation.hpp>
98#include < openvic-dataloader/detail/Utility.hpp>
109
10+ #include < lexy/_detail/config.hpp>
1111#include < lexy/encoding.hpp>
1212#include < lexy/input/buffer.hpp>
1313
@@ -33,87 +33,17 @@ namespace ovdl {
3333
3434 std::size_t size () const noexcept ;
3535
36- template <typename Encoding, typename MemoryResource = void >
37- constexpr bool is_buffer () const {
38- return buffer_ids::type_id<lexy::buffer<Encoding, MemoryResource>>() + 1 == _buffer.index ();
36+ lexy::buffer<lexy::utf8_char_encoding, void >& buffer () {
37+ return _buffer;
3938 }
4039
41- template <typename Encoding, typename MemoryResource = void >
42- lexy::buffer<Encoding, MemoryResource>* try_get_buffer_as () {
43- return std::get_if<lexy::buffer<Encoding, MemoryResource>>(&_buffer);
40+ lexy::buffer<lexy::utf8_char_encoding, void > const & buffer () const {
41+ return _buffer;
4442 }
4543
46- template <typename Encoding, typename MemoryResource = void >
47- const lexy::buffer<Encoding, MemoryResource>* try_get_buffer_as () const {
48- return std::get_if<lexy::buffer<Encoding, MemoryResource>>(&_buffer);
49- }
50-
51- template <typename Encoding, typename MemoryResource = void >
52- lexy::buffer<Encoding, MemoryResource>& get_buffer_as () {
53- assert ((is_buffer<Encoding, MemoryResource>()));
54- return *std::get_if<lexy::buffer<Encoding, MemoryResource>>(&_buffer);
55- }
56-
57- template <typename Encoding, typename MemoryResource = void >
58- const lexy::buffer<Encoding, MemoryResource>& get_buffer_as () const {
59- assert ((is_buffer<Encoding, MemoryResource>()));
60- return *std::get_if<lexy::buffer<Encoding, MemoryResource>>(&_buffer);
61- }
62-
63- #define SWITCH_LIST \
64- X (1 ) \
65- X (2 ) \
66- X (3 ) \
67- X (4 ) \
68- X (5 ) \
69- X (6 )
70-
71- #define X (NUM ) \
72- case NUM: \
73- return visitor(std::get<NUM>(_buffer));
74-
75- template <typename Visitor>
76- decltype (auto ) visit_buffer(Visitor&& visitor) {
77- switch (_buffer.index ()) {
78- SWITCH_LIST
79- case 0 : return visitor (lexy::buffer<> {});
80- default : ovdl::detail::unreachable ();
81- }
82- }
83-
84- template <typename Return, typename Visitor>
85- Return visit_buffer (Visitor&& visitor) {
86- switch (_buffer.index ()) {
87- SWITCH_LIST
88- case 0 : return visitor (lexy::buffer<> {});
89- default : ovdl::detail::unreachable ();
90- }
91- }
92-
93- template <typename Visitor>
94- decltype (auto ) visit_buffer(Visitor&& visitor) const {
95- switch (_buffer.index ()) {
96- SWITCH_LIST
97- case 0 : return visitor (lexy::buffer<> {});
98- default : ovdl::detail::unreachable ();
99- }
100- }
101-
102- template <typename Return, typename Visitor>
103- Return visit_buffer (Visitor&& visitor) const {
104- switch (_buffer.index ()) {
105- SWITCH_LIST
106- case 0 : return visitor (lexy::buffer<> {});
107- default : ovdl::detail::unreachable ();
108- }
109- }
110- #undef X
111- #undef SWITCH_LIST
112-
11344 protected:
11445 const char * _path = " " ;
115- std::size_t _buffer_size = 0 ;
116- detail::type_prepend_t <buffer_ids::variant_type, std::monostate> _buffer;
46+ lexy::buffer<lexy::utf8_char_encoding, void > _buffer;
11747 };
11848
11949 template <typename NodeT>
@@ -122,17 +52,13 @@ namespace ovdl {
12252
12353 BasicFile () = default ;
12454
125- template <typename Encoding, typename MemoryResource = void >
126- explicit BasicFile (const char * path, lexy::buffer<Encoding, MemoryResource>&& buffer)
55+ explicit BasicFile (const char * path, lexy::buffer<lexy::utf8_char_encoding, void >&& buffer)
12756 : File(path) {
128- _buffer_size = buffer.size ();
12957 _buffer = static_cast <std::remove_reference_t <decltype (buffer)>&&>(buffer);
13058 }
13159
132- template <typename Encoding, typename MemoryResource = void >
133- explicit BasicFile (lexy::buffer<Encoding, MemoryResource>&& buffer)
60+ explicit BasicFile (lexy::buffer<lexy::utf8_char_encoding, void >&& buffer)
13461 : File(" " ) {
135- _buffer_size = buffer.size ();
13662 _buffer = static_cast <std::remove_reference_t <decltype (buffer)>&&>(buffer);
13763 }
13864
0 commit comments