C++ Logo

SG16

Advanced search

Subject: Re: [SG16-Unicode] Replacement for codecvt
From: Lyberta (lyberta_at_[hidden])
Date: 2019-08-29 06:18:00


Niall Douglas:
> As SG16 knows, I've been busy reworking path_view to meet your feedback.
> I am finding std::codecvt to be a steaming pile of poo, and I was
> wondering if anyone on SG16 plans to propose a more usable, modern,
> Unicode library API?

Yes, of course. I just need ranges so I can test and write a wording for
my proposal for encoding forms API.

It has the following static member functions:

to_scalar_value taking std::input_range and returning
std::unicode::scalar_value.

to_code_units taking std::unicode::scalar_value and std::output_range,
returning nothing.

next_scalar_value taking std::input_range and mutating it, returning
nothing.

previous_scalar_value taking std::bidirectional_range and mutating it,
returning nothing.

These are enough to implement conversions between various UTF and to
implement std::unicode::scalar_value_sequence.

std::unicode::scalar_value_sequence has iterators that call those
encoding forms:

operator* returns magic reference that calls to_scalar_value
operator= to returned magic reference calls to_code_units
operator++ calls next_scalar_value
operator-- calls previous_scalar_value

As the proposal is targeting C++23, I'm sure we get ranges so the
wording should be finished in time.




SG16 list run by sg16-owner@lists.isocpp.org