Progress & Future Workο
This is where the status and progress of the library will be kept up to date. You can also check the Issue Tracker for specific issues and things being worked on! We also maintain a very large list of encodings, so you can check if a specific encoding you are looking for is supported (and if you will need to implement an Encoding Object for it).
Copyable Stateο
Right now, all state parameters are assumed to be move-only. This is detrimental to creating cheap views like .code_points()
on basic_text_view
, and harms other types as well. Work should be done either to make copyable state, or allow passing state in more effectively (we currently do the passing technique at the moment).
β Do all states need to be copyable? Can it be done selectively? (At the moment:
basic_text_view
andtext_view
very well may need it, and as more Shift-State encodings become a part of the library, even more needβ¦)
Transcoding Iterators/Transcode View β ο
Right now these types would not work especially well for input and output ranges. They should be modified just like the internal ztd::text::__txt_detail::__encoding_iterator
class types, so that they work with input_iterator
and output_iterator
types.
β 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&
forreference
to enable C++20 ranges to work properly.β Mark as
enable_borrowed_range
when C++20 is detected.
Normalizationο
ztd::text::nfkd/nfk/nfc/nfkc/fcc
are all skeletons right now that need to be filled out for the purposes of giving this library normalization views.
β nfkc
β nfc
β nfkd
β nfd
β Hook up to
basic_text_view
andbasic_text
when finished
basic_text_view
ο
ztd::text::basic_text_view<Encoding, NormalizationForm, Range, ...>
is to be the premiere view for looking at text and preserving both the normalization and encoding form during insertion and erasure. It is not fully implemented yet, even though basic skeletons exist for it in the code base.
β Grapheme Cluster Iterators
β Code Point iterators
β Grapheme Cluster Iterators
β Comparison operators (If the normalization form is the same and is_bitwise_transcoding_compatible, then
memcmp
. If just normalization form and encoding is same,memcmp
. Otherwise, code point by code point comparison.)
basic_text
ο
ztd::text::basic_text<Encoding, NormalizationForm, Storage, ...>
is to be the premiere container for storing text and preserving both the normalization and encoding form during insertion and erasure. It is not fully implemented yet, even though basic skeletons exist for it in the code base.
β Code Point iterators/ranges
β Grapheme Cluster Iterators
β Comparison operators (If the normalization form is the same and is_bitwise_transcoding_compatible, then
memcmp
. If just normalization form and encoding is same,memcmp
. Otherwise, code point by code point comparison.)β Insertion (Fast normalization-preserving splicing/inserting algorithm)
β Deletion
β Converting Constructors between compatible types (errors the same way lossy conversion protection describes if they are not compatible, forcing a user to pass in an error handler.)