Skip to content

Commit

Permalink
🎨 Adjust gap buffer and fix ptr+size constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
ThePhD committed Mar 26, 2021
1 parent abeff71 commit f30977a
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 28 deletions.
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,6 @@ if (ZTD_TEXT_SCRATCH)
target_link_libraries(scratch PRIVATE ztd::text)
target_compile_options(scratch
PRIVATE
-fconcepts-diagnostics-depth=32
${--warn-pedantic}
${--warn-default}
${--deny-errors})
Expand Down
2 changes: 1 addition & 1 deletion documentation/source/future.rst
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Right now these types would not work especially well for input and output ranges

- ☑ Improve constructor delegation and make sure to explicitly implement default construction vs. letting it happen with ``=default`` (which does not work for some of the base types present).
- ☑ Modify implementation to cache data and position when an input or output iterator is detected.
- Return ``const value_type&`` for ``reference`` to enable C++20 ranges to work properly.
- Return ``const value_type&`` for ``reference`` to enable C++20 ranges to work properly.
- ☐ Mark as ``enable_borrowed_range`` when C++20 is detected.


Expand Down
2 changes: 1 addition & 1 deletion examples/basic/source/gap_buffer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ namespace gap {
private:
// 2倍伸長ルールで、新しい領域の大きさを決める
size_type m_next_size() const {
return bend - bbegin ? ((bend - bbegin) << 1) : 1;
return (bend - bbegin) ? ((bend - bbegin) << 1) : 1;
}

// 新しいバッファへ全要素を転送する
Expand Down
2 changes: 1 addition & 1 deletion include/ztd/text/detail/encoding_iterator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ namespace ztd { namespace text {
///
/// @remarks This is a proxy iterator, so the @c reference is a non-reference @c value_type.
//////
using reference = const value_type&;
using reference = value_type;
//////
/// @brief The type returned when two of these pointers are subtracted from one another.
///
Expand Down
42 changes: 28 additions & 14 deletions tests/basic_run_time/source/any_encoding.decode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -67,7 +68,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand All @@ -85,7 +87,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -97,7 +100,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand All @@ -115,7 +119,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -127,7 +132,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand All @@ -145,7 +151,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -157,7 +164,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand All @@ -175,7 +183,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -185,7 +194,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand All @@ -202,7 +212,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -212,7 +223,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand All @@ -229,7 +241,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result0_storage_view(result0_storage.data(), result0_storage.size());
auto result0 = ztd::text::decode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(), result0.output.data());
std::basic_string_view<char32_t> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0
= std::equal(result0_view.begin(), result0_view.end(), expected0.begin(), expected0.end());
REQUIRE(is_equal0);
Expand All @@ -239,7 +252,8 @@ TEST_CASE("text/decode/any_encoding/encoding_scheme", "decode from byte arrays w
ztd::text::span<char32_t> result1_storage_view(result1_storage.data(), result1_storage.size());
auto result1 = ztd::text::decode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(), result1.output.data());
std::basic_string_view<char32_t> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), expected1.begin(), expected1.end());
REQUIRE(is_equal1);
Expand Down
30 changes: 20 additions & 10 deletions tests/basic_run_time/source/any_encoding.encode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result0_storage_view(result0_storage);
auto result0 = ztd::text::encode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
ztd::text::span<std::byte> result0_view(result0_storage_view.data(), result0.output.data());
ztd::text::span<std::byte> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0 = std::equal(result0_view.begin(), result0_view.end(), output0.begin(), output0.end());
REQUIRE(is_equal0);

Expand All @@ -65,7 +66,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result1_storage_view(result1_storage);
auto result1 = ztd::text::encode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
ztd::text::span<std::byte> result1_view(result1_storage_view.data(), result1.output.data());
ztd::text::span<std::byte> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), output1.begin(), output1.end());
REQUIRE(is_equal1);
Expand All @@ -83,7 +85,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result0_storage_view(result0_storage);
auto result0 = ztd::text::encode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
ztd::text::span<std::byte> result0_view(result0_storage_view.data(), result0.output.data());
ztd::text::span<std::byte> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0 = std::equal(result0_view.begin(), result0_view.end(), output0.begin(), output0.end());
REQUIRE(is_equal0);

Expand All @@ -93,7 +96,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result1_storage_view(result1_storage);
auto result1 = ztd::text::encode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
ztd::text::span<std::byte> result1_view(result1_storage_view.data(), result1.output.data());
ztd::text::span<std::byte> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1
= std::equal(result1_view.begin(), result1_view.end(), output1.begin(), output1.end());
REQUIRE(is_equal1);
Expand All @@ -111,7 +115,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result0_storage_view(result0_storage);
auto result0 = ztd::text::encode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
ztd::text::span<std::byte> result0_view(result0_storage_view.data(), result0.output.data());
ztd::text::span<std::byte> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0 = std::equal(result0_view.begin(), result0_view.end(), output0.begin(), output0.end());
REQUIRE(is_equal0);

Expand All @@ -120,7 +125,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result1_storage_view(result1_storage);
auto result1 = ztd::text::encode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
ztd::text::span<std::byte> result1_view(result1_storage_view.data(), result1.output.data());
ztd::text::span<std::byte> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1 = std::equal(result1_view.begin(), result1_view.end(), output1.begin(), output1.end());
REQUIRE(is_equal1);
}
Expand All @@ -136,7 +142,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result0_storage_view(result0_storage);
auto result0 = ztd::text::encode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
ztd::text::span<std::byte> result0_view(result0_storage_view.data(), result0.output.data());
ztd::text::span<std::byte> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0 = std::equal(result0_view.begin(), result0_view.end(), output0.begin(), output0.end());
REQUIRE(is_equal0);

Expand All @@ -145,7 +152,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result1_storage_view(result1_storage);
auto result1 = ztd::text::encode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
ztd::text::span<std::byte> result1_view(result1_storage_view.data(), result1.output.data());
ztd::text::span<std::byte> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1 = std::equal(result1_view.begin(), result1_view.end(), output1.begin(), output1.end());
REQUIRE(is_equal1);
}
Expand All @@ -161,7 +169,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result0_storage_view(result0_storage);
auto result0 = ztd::text::encode_into(
input0, encoding, result0_storage_view, ztd::text::replacement_handler {}, state0);
ztd::text::span<std::byte> result0_view(result0_storage_view.data(), result0.output.data());
ztd::text::span<std::byte> result0_view(result0_storage_view.data(),
static_cast<std::size_t>(result0.output.data() - result0_storage_view.data()));
bool is_equal0 = std::equal(result0_view.begin(), result0_view.end(), output0.begin(), output0.end());
REQUIRE(is_equal0);

Expand All @@ -170,7 +179,8 @@ TEST_CASE("text/encode/any_encoding/encoding_scheme", "encode to byte arrays thr
ztd::text::span<std::byte> result1_storage_view(result1_storage);
auto result1 = ztd::text::encode_into(
input1, encoding, result1_storage_view, ztd::text::replacement_handler {}, state1);
ztd::text::span<std::byte> result1_view(result1_storage_view.data(), result1.output.data());
ztd::text::span<std::byte> result1_view(result1_storage_view.data(),
static_cast<std::size_t>(result1.output.data() - result1_storage_view.data()));
bool is_equal1 = std::equal(result1_view.begin(), result1_view.end(), output1.begin(), output1.end());
REQUIRE(is_equal1);
}
Expand Down

0 comments on commit f30977a

Please sign in to comment.