mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-14 17:24:01 +00:00
ICU-22745 Merge ICU 75 maintenance branch to main (#2972)
This commit is contained in:
commit
5e35ffc87e
1418 changed files with 5453 additions and 5239 deletions
|
@ -381,7 +381,7 @@ jobs:
|
|||
#-------------------------------------------------------------------------
|
||||
- job: ICU4C_MSVC_x64_Debug
|
||||
displayName: 'C: MSVC x64 Debug (VS 2022)'
|
||||
timeoutInMinutes: 35
|
||||
timeoutInMinutes: 60
|
||||
pool:
|
||||
vmImage: 'windows-2022'
|
||||
demands:
|
||||
|
@ -487,7 +487,7 @@ jobs:
|
|||
#-------------------------------------------------------------------------
|
||||
- job: ICU4C_MSVC_x86_Debug_VS2019
|
||||
displayName: 'C: MSVC 32-bit Debug (VS 2019)'
|
||||
timeoutInMinutes: 60
|
||||
timeoutInMinutes: 90
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
demands:
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -156,223 +156,223 @@ Added in ICU 75
|
|||
|---|---|---|---|
|
||||
| calendar.h | <tt>#define</tt> DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY | (missing) | Internal
|
||||
| caniter.h | <tt>static</tt> void icu::CanonicalIterator::permute(UnicodeString&, bool, Hashtable*, UErrorCode&, int32_t depth=) | (missing) | Internal
|
||||
| messageformat2_arguments.h | MessageArguments& icu::message2::MessageArguments::operator=(MessageArguments&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_arguments.h | icu::message2::MessageArguments::MessageArguments()=default | (missing) | InternalICU 75.0
|
||||
| messageformat2_arguments.h | icu::message2::MessageArguments::MessageArguments(const std::map<, Formattable >&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_arguments.h | icu::message2::MessageArguments::~MessageArguments() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder & icu::message2::data_model::Markup::Builder::setClose() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder & icu::message2::data_model::Markup::Builder::setOpen() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder & icu::message2::data_model::Markup::Builder::setStandalone() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addBinding(Binding&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addSelector(Expression&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addUnsupportedStatement(UnsupportedStatement&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addVariant(SelectorKeys&&, Pattern&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::setPattern(Pattern&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Expression::Builder::addAttribute(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Expression::Builder::setOperand(Operand&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Expression::Builder::setOperator(Operator&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Markup::Builder::addAttribute(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Markup::Builder::addOption(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Markup::Builder::setName(const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Operator::Builder::addOption(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Operator::Builder::setFunctionName(FunctionName&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Operator::Builder::setReserved(Reserved&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Pattern::Builder::add(Expression&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Pattern::Builder::add(Markup&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Pattern::Builder::add(UnicodeString&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Reserved::Builder::add(Literal&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::SelectorKeys::Builder::add(Key&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::UnsupportedStatement::Builder::addExpression(Expression&&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::UnsupportedStatement::Builder::setBody(Reserved&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::UnsupportedStatement::Builder::setKeyword(const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Expression icu::message2::data_model::Expression::Builder::build(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Expression& icu::message2::data_model::Expression::operator=(Expression) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Literal& icu::message2::data_model::Literal::operator=(Literal) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | MFDataModel icu::message2::MFDataModel::Builder::build(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Markup icu::message2::data_model::Markup::Builder::build(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Operator icu::message2::data_model::Operator::Builder::build(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Option& icu::message2::data_model::Option::operator=(Option) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Pattern icu::message2::data_model::Pattern::Builder::build(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | PatternPart& icu::message2::data_model::PatternPart::operator=(PatternPart) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Reserved icu::message2::data_model::Reserved::Builder::build(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | Reserved& icu::message2::data_model::Reserved::operator=(Reserved) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | SelectorKeys icu::message2::data_model::SelectorKeys::Builder::build(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | UnicodeString icu::message2::data_model::Literal::quoted() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | UnsupportedStatement icu::message2::data_model::UnsupportedStatement::Builder::build(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | UnsupportedStatement& icu::message2::data_model::UnsupportedStatement::operator=(UnsupportedStatement) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isFunctionCall() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isReserved() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isStandaloneAnnotation() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Literal::isQuoted() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Literal::operator<(const Literal&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Literal::operator==(const Literal&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isClose() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isOpen() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isStandalone() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isExpression() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isMarkup() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isText() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Expression & icu::message2::data_model::PatternPart::contents() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Literal& icu::message2::data_model::Reserved::getPart(int32_t) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Markup & icu::message2::data_model::PatternPart::asMarkup() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Operand & icu::message2::data_model::Expression::getOperand() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Operand & icu::message2::data_model::Option::getValue() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Operator* icu::message2::data_model::Expression::getOperator(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const Reserved* icu::message2::data_model::UnsupportedStatement::getBody(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::Literal::unquoted() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::Markup::getName() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::Option::getName() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::PatternPart::asText() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::UnsupportedStatement::getKeyword() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::MFDataModel::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::MFDataModel::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Expression() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Expression(const Expression&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::~Expression() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal()=default | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal(bool, const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal(const Literal&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::~Literal() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::Markup() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::~Markup() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Operator::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Operator::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::Option() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::Option(const Option&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::Option(const UnicodeString&, Operand&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::~Option() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Pattern::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Pattern::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart()=default | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(Expression&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(Markup&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(const PatternPart&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::~PatternPart() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Reserved() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Reserved(const Reserved&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::~Reserved() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::SelectorKeys::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::SelectorKeys::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::UnsupportedStatement() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::UnsupportedStatement(const UnsupportedStatement&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::~UnsupportedStatement() | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | int32_t icu::message2::data_model::Reserved::numParts() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | std::vector< Expression > icu::message2::data_model::UnsupportedStatement::getExpressions() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | std::vector< Option > icu::message2::data_model::Expression::getAttributes() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | std::vector< Option > icu::message2::data_model::Markup::getAttributes() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_data_model.h | std::vector< Option > icu::message2::data_model::Markup::getOptions() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_arguments.h | MessageArguments& icu::message2::MessageArguments::operator=(MessageArguments&&) | (missing) | InternalICU 75
|
||||
| messageformat2_arguments.h | icu::message2::MessageArguments::MessageArguments()=default | (missing) | InternalICU 75
|
||||
| messageformat2_arguments.h | icu::message2::MessageArguments::MessageArguments(const std::map<, Formattable >&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_arguments.h | icu::message2::MessageArguments::~MessageArguments() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder & icu::message2::data_model::Markup::Builder::setClose() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder & icu::message2::data_model::Markup::Builder::setOpen() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder & icu::message2::data_model::Markup::Builder::setStandalone() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addBinding(Binding&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addSelector(Expression&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addUnsupportedStatement(UnsupportedStatement&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::addVariant(SelectorKeys&&, Pattern&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::MFDataModel::Builder::setPattern(Pattern&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Expression::Builder::addAttribute(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Expression::Builder::setOperand(Operand&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Expression::Builder::setOperator(Operator&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Markup::Builder::addAttribute(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Markup::Builder::addOption(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Markup::Builder::setName(const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Operator::Builder::addOption(const UnicodeString&, Operand&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Operator::Builder::setFunctionName(FunctionName&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Operator::Builder::setReserved(Reserved&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Pattern::Builder::add(Expression&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Pattern::Builder::add(Markup&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Pattern::Builder::add(UnicodeString&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::Reserved::Builder::add(Literal&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::SelectorKeys::Builder::add(Key&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::UnsupportedStatement::Builder::addExpression(Expression&&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::UnsupportedStatement::Builder::setBody(Reserved&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Builder& icu::message2::data_model::UnsupportedStatement::Builder::setKeyword(const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Expression icu::message2::data_model::Expression::Builder::build(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Expression& icu::message2::data_model::Expression::operator=(Expression) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Literal& icu::message2::data_model::Literal::operator=(Literal) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | MFDataModel icu::message2::MFDataModel::Builder::build(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Markup icu::message2::data_model::Markup::Builder::build(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Operator icu::message2::data_model::Operator::Builder::build(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Option& icu::message2::data_model::Option::operator=(Option) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Pattern icu::message2::data_model::Pattern::Builder::build(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | PatternPart& icu::message2::data_model::PatternPart::operator=(PatternPart) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Reserved icu::message2::data_model::Reserved::Builder::build(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | Reserved& icu::message2::data_model::Reserved::operator=(Reserved) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | SelectorKeys icu::message2::data_model::SelectorKeys::Builder::build(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | UnicodeString icu::message2::data_model::Literal::quoted() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | UnsupportedStatement icu::message2::data_model::UnsupportedStatement::Builder::build(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | UnsupportedStatement& icu::message2::data_model::UnsupportedStatement::operator=(UnsupportedStatement) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isFunctionCall() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isReserved() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Expression::isStandaloneAnnotation() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Literal::isQuoted() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Literal::operator<(const Literal&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Literal::operator==(const Literal&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isClose() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isOpen() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::Markup::isStandalone() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isExpression() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isMarkup() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | bool icu::message2::data_model::PatternPart::isText() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Expression & icu::message2::data_model::PatternPart::contents() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Literal& icu::message2::data_model::Reserved::getPart(int32_t) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Markup & icu::message2::data_model::PatternPart::asMarkup() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Operand & icu::message2::data_model::Expression::getOperand() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Operand & icu::message2::data_model::Option::getValue() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Operator* icu::message2::data_model::Expression::getOperator(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const Reserved* icu::message2::data_model::UnsupportedStatement::getBody(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::Literal::unquoted() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::Markup::getName() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::Option::getName() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::PatternPart::asText() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | const UnicodeString & icu::message2::data_model::UnsupportedStatement::getKeyword() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::MFDataModel::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::MFDataModel::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Expression() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::Expression(const Expression&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Expression::~Expression() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal()=default | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal(bool, const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::Literal(const Literal&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Literal::~Literal() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::Markup() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Markup::~Markup() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Operator::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Operator::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::Option() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::Option(const Option&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::Option(const UnicodeString&, Operand&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Option::~Option() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Pattern::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Pattern::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart()=default | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(Expression&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(Markup&&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(const PatternPart&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::PatternPart(const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::PatternPart::~PatternPart() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Reserved() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::Reserved(const Reserved&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::Reserved::~Reserved() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::SelectorKeys::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::SelectorKeys::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::UnsupportedStatement() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::UnsupportedStatement(const UnsupportedStatement&) | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | icu::message2::data_model::UnsupportedStatement::~UnsupportedStatement() | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | int32_t icu::message2::data_model::Reserved::numParts() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | std::vector< Expression > icu::message2::data_model::UnsupportedStatement::getExpressions() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | std::vector< Option > icu::message2::data_model::Expression::getAttributes() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | std::vector< Option > icu::message2::data_model::Markup::getAttributes() const | (missing) | InternalICU 75
|
||||
| messageformat2_data_model.h | std::vector< Option > icu::message2::data_model::Markup::getOptions() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | Appendable& icu::message2::FormattedMessage::appendTo(Appendable&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | CharacterIterator* icu::message2::FormattedMessage::toCharacterIterator(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | Formattable& icu::message2::Formattable::operator=(Formattable) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | FormattedPlaceholder& icu::message2::FormattedPlaceholder::operator=(FormattedPlaceholder&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | FormattedValue& icu::message2::FormattedValue::operator=(FormattedValue&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | FunctionOptions& icu::message2::FunctionOptions::operator=(FunctionOptions&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | FunctionOptions& icu::message2::FunctionOptions::operator=(const FunctionOptions&)=delete | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | FunctionOptionsMap icu::message2::FunctionOptions::getOptions() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | Formattable& icu::message2::Formattable::operator=(Formattable) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | FormattedPlaceholder& icu::message2::FormattedPlaceholder::operator=(FormattedPlaceholder&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | FormattedValue& icu::message2::FormattedValue::operator=(FormattedValue&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | FunctionOptions& icu::message2::FunctionOptions::operator=(FunctionOptions&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | FunctionOptions& icu::message2::FunctionOptions::operator=(const FunctionOptions&)=delete | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | FunctionOptionsMap icu::message2::FunctionOptions::getOptions() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | StringPiece icu::message2::FormattedMessage::subSequence(int32_t, int32_t, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | UDate icu::message2::Formattable::getDate(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | UFormattableType icu::message2::Formattable::getType() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | UDate icu::message2::Formattable::getDate(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | UFormattableType icu::message2::Formattable::getType() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | UnicodeString icu::message2::FormattedMessage::toString(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | UnicodeString icu::message2::FormattedMessage::toTempString(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | UnicodeString icu::message2::FormattedPlaceholder::formatToString(const Locale&, UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::Formattable::isNumeric() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | UnicodeString icu::message2::FormattedPlaceholder::formatToString(const Locale&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::Formattable::isNumeric() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedMessage::nextPosition(ConstrainedFieldPosition&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::canFormat() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isEvaluated() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isFallback() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isNullOperand() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedValue::isNumber() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedValue::isString() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::canFormat() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isEvaluated() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isFallback() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedPlaceholder::isNullOperand() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedValue::isNumber() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | bool icu::message2::FormattedValue::isString() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | char16_t icu::message2::FormattedMessage::charAt(int32_t, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const Formattable* icu::message2::Formattable::getArray(int32_t&, UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const FormattableObject* icu::message2::Formattable::getObject(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const FormattedValue & icu::message2::FormattedPlaceholder::output() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const FunctionOptions & icu::message2::FormattedPlaceholder::options() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const UnicodeString & icu::message2::FormattableObject::tag() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const UnicodeString & icu::message2::FormattedPlaceholder::getFallback() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const UnicodeString & icu::message2::FormattedValue::getString() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const UnicodeString& icu::message2::Formattable::getString(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const message2::Formattable & icu::message2::FormattedPlaceholder::asFormattable() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const number::FormattedNumber & icu::message2::FormattedValue::getNumber() const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | double icu::message2::Formattable::getDouble(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::Formattable icu::message2::Formattable::asICUFormattable(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const Formattable&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const Formattable*, int32_t) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const FormattableObject*) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(double) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(int64_t) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::~Formattable() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattableObject::~FormattableObject() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | const Formattable* icu::message2::Formattable::getArray(int32_t&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const FormattableObject* icu::message2::Formattable::getObject(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const FormattedValue & icu::message2::FormattedPlaceholder::output() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const FunctionOptions & icu::message2::FormattedPlaceholder::options() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const UnicodeString & icu::message2::FormattableObject::tag() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const UnicodeString & icu::message2::FormattedPlaceholder::getFallback() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const UnicodeString & icu::message2::FormattedValue::getString() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const UnicodeString& icu::message2::Formattable::getString(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const message2::Formattable & icu::message2::FormattedPlaceholder::asFormattable() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | const number::FormattedNumber & icu::message2::FormattedValue::getNumber() const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | double icu::message2::Formattable::getDouble(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::Formattable icu::message2::Formattable::asICUFormattable(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const Formattable&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const Formattable*, int32_t) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const FormattableObject*) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(double) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::Formattable(int64_t) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::Formattable::~Formattable() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattableObject::~FormattableObject() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedMessage::FormattedMessage(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedMessage::~FormattedMessage() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(FormattedPlaceholder&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const Formattable&, const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&, FormattedValue&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&, FunctionOptions&&, FormattedValue&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(FormattedValue&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(const UnicodeString&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(number::FormattedNumber&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::~FormattedValue() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FunctionOptions::FunctionOptions() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FunctionOptions::FunctionOptions(FunctionOptions&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FunctionOptions::~FunctionOptions() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | int32_t icu::message2::Formattable::getLong(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(FormattedPlaceholder&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const Formattable&, const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&, FormattedValue&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const FormattedPlaceholder&, FunctionOptions&&, FormattedValue&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedPlaceholder::FormattedPlaceholder(const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(FormattedValue&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(const UnicodeString&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::FormattedValue(number::FormattedNumber&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FormattedValue::~FormattedValue() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FunctionOptions::FunctionOptions() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FunctionOptions::FunctionOptions(FunctionOptions&&) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | icu::message2::FunctionOptions::~FunctionOptions() | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | int32_t icu::message2::Formattable::getLong(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | int32_t icu::message2::FormattedMessage::length(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | int64_t icu::message2::Formattable::getInt64(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | int64_t icu::message2::Formattable::getInt64Value(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | <tt>static</tt> Formattable icu::message2::Formattable::forDate(UDate) | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | <tt>static</tt> Formattable icu::message2::Formattable::forDecimal(std::string_view, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | Builder& icu::message2::MFFunctionRegistry::Builder::adoptFormatter(const data_model::FunctionName&, FormatterFactory*, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | Builder& icu::message2::MFFunctionRegistry::Builder::adoptSelector(const data_model::FunctionName&, SelectorFactory*, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | Builder& icu::message2::MFFunctionRegistry::Builder::setDefaultFormatterNameByType(const UnicodeString&, const data_model::FunctionName&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | FormattedPlaceholder icu::message2::Formatter::format(FormattedPlaceholder&&, FunctionOptions&&, UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | Formatter* icu::message2::FormatterFactory::createFormatter(const Locale&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | FormatterFactory& icu::message2::FormatterFactory::operator=(const FormatterFactory&)=delete | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | FormatterFactory* icu::message2::MFFunctionRegistry::getFormatter(const FunctionName&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | MFFunctionRegistry icu::message2::MFFunctionRegistry::Builder::build() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | MFFunctionRegistry& icu::message2::MFFunctionRegistry::operator=(MFFunctionRegistry&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | Selector* icu::message2::SelectorFactory::createSelector(const Locale&, UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | SelectorFactory& icu::message2::SelectorFactory::operator=(const SelectorFactory&)=delete | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | bool icu::message2::MFFunctionRegistry::getDefaultFormatterNameByType(const UnicodeString&, FunctionName&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | const SelectorFactory* icu::message2::MFFunctionRegistry::getSelector(const FunctionName&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::Formatter::~Formatter() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::FormatterFactory::~FormatterFactory() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::MFFunctionRegistry(MFFunctionRegistry&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::~MFFunctionRegistry() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::Selector::~Selector() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | icu::message2::SelectorFactory::~SelectorFactory() | (missing) | InternalICU 75.0
|
||||
| messageformat2_function_registry.h | void icu::message2::Selector::selectKey(FormattedPlaceholder&&, FunctionOptions&&, const UnicodeString*, int32_t, UnicodeString*, int32_t&, UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setDataModel(MFDataModel&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setFunctionRegistry(const MFFunctionRegistry&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setLocale(const Locale&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setPattern(const UnicodeString&, UParseError&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | FormattedMessage icu::message2::MessageFormatter::format(const MessageArguments&, UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | MessageFormatter icu::message2::MessageFormatter::Builder::build(UErrorCode&) const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | MessageFormatter& icu::message2::MessageFormatter::operator=(MessageFormatter&&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | UnicodeString icu::message2::MessageFormatter::formatToString(const MessageArguments&, UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | UnicodeString icu::message2::MessageFormatter::getPattern() const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | const Locale & icu::message2::MessageFormatter::getLocale() const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | const MFDataModel & icu::message2::MessageFormatter::getDataModel() const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | const UnicodeString & icu::message2::MessageFormatter::getNormalizedPattern() const | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | icu::message2::MessageFormatter::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | icu::message2::MessageFormatter::Builder::~Builder() | (missing) | InternalICU 75.0
|
||||
| messageformat2.h | icu::message2::MessageFormatter::~MessageFormatter() | (missing) | InternalICU 75.0
|
||||
| messageformat2_formattable.h | int64_t icu::message2::Formattable::getInt64(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | int64_t icu::message2::Formattable::getInt64Value(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | <tt>static</tt> Formattable icu::message2::Formattable::forDate(UDate) | (missing) | InternalICU 75
|
||||
| messageformat2_formattable.h | <tt>static</tt> Formattable icu::message2::Formattable::forDecimal(std::string_view, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | Builder& icu::message2::MFFunctionRegistry::Builder::adoptFormatter(const data_model::FunctionName&, FormatterFactory*, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | Builder& icu::message2::MFFunctionRegistry::Builder::adoptSelector(const data_model::FunctionName&, SelectorFactory*, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | Builder& icu::message2::MFFunctionRegistry::Builder::setDefaultFormatterNameByType(const UnicodeString&, const data_model::FunctionName&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | FormattedPlaceholder icu::message2::Formatter::format(FormattedPlaceholder&&, FunctionOptions&&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | Formatter* icu::message2::FormatterFactory::createFormatter(const Locale&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | FormatterFactory& icu::message2::FormatterFactory::operator=(const FormatterFactory&)=delete | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | FormatterFactory* icu::message2::MFFunctionRegistry::getFormatter(const FunctionName&) const | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | MFFunctionRegistry icu::message2::MFFunctionRegistry::Builder::build() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | MFFunctionRegistry& icu::message2::MFFunctionRegistry::operator=(MFFunctionRegistry&&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | Selector* icu::message2::SelectorFactory::createSelector(const Locale&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | SelectorFactory& icu::message2::SelectorFactory::operator=(const SelectorFactory&)=delete | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | bool icu::message2::MFFunctionRegistry::getDefaultFormatterNameByType(const UnicodeString&, FunctionName&) const | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | const SelectorFactory* icu::message2::MFFunctionRegistry::getSelector(const FunctionName&) const | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::Formatter::~Formatter() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::FormatterFactory::~FormatterFactory() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::MFFunctionRegistry(MFFunctionRegistry&&) | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::MFFunctionRegistry::~MFFunctionRegistry() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::Selector::~Selector() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | icu::message2::SelectorFactory::~SelectorFactory() | (missing) | InternalICU 75
|
||||
| messageformat2_function_registry.h | void icu::message2::Selector::selectKey(FormattedPlaceholder&&, FunctionOptions&&, const UnicodeString*, int32_t, UnicodeString*, int32_t&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setDataModel(MFDataModel&&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setFunctionRegistry(const MFFunctionRegistry&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setLocale(const Locale&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | Builder& icu::message2::MessageFormatter::Builder::setPattern(const UnicodeString&, UParseError&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | FormattedMessage icu::message2::MessageFormatter::format(const MessageArguments&, UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2.h | MessageFormatter icu::message2::MessageFormatter::Builder::build(UErrorCode&) const | (missing) | InternalICU 75
|
||||
| messageformat2.h | MessageFormatter& icu::message2::MessageFormatter::operator=(MessageFormatter&&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | UnicodeString icu::message2::MessageFormatter::formatToString(const MessageArguments&, UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | UnicodeString icu::message2::MessageFormatter::getPattern() const | (missing) | InternalICU 75
|
||||
| messageformat2.h | const Locale & icu::message2::MessageFormatter::getLocale() const | (missing) | InternalICU 75
|
||||
| messageformat2.h | const MFDataModel & icu::message2::MessageFormatter::getDataModel() const | (missing) | InternalICU 75
|
||||
| messageformat2.h | const UnicodeString & icu::message2::MessageFormatter::getNormalizedPattern() const | (missing) | InternalICU 75
|
||||
| messageformat2.h | icu::message2::MessageFormatter::Builder::Builder(UErrorCode&) | (missing) | InternalICU 75
|
||||
| messageformat2.h | icu::message2::MessageFormatter::Builder::~Builder() | (missing) | InternalICU 75
|
||||
| messageformat2.h | icu::message2::MessageFormatter::~MessageFormatter() | (missing) | InternalICU 75
|
||||
| numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() && | (missing) | DraftICU 75
|
||||
| numberformatter.h | UnlocalizedNumberFormatter icu::number::LocalizedNumberFormatter::withoutLocale() const & | (missing) | DraftICU 75
|
||||
| numberrangeformatter.h | UnlocalizedNumberRangeFormatter icu::number::LocalizedNumberRangeFormatter::withoutLocale() && | (missing) | DraftICU 75
|
||||
|
@ -396,22 +396,22 @@ Added in ICU 75
|
|||
| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDENTIFIER_STATUS | (missing) | DraftICU 75
|
||||
| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDENTIFIER_TYPE | (missing) | DraftICU 75
|
||||
| uchar.h | int32_t u_getIDTypes(UChar32, UIdentifierType*, int32_t, UErrorCode*) | (missing) | DraftICU 75
|
||||
| uconfig.h | <tt>#define</tt> UCONFIG_NO_MF2 | (missing) | InternalICU 75.0
|
||||
| uconfig.h | <tt>#define</tt> UCONFIG_NO_MF2 | (missing) | InternalICU 75
|
||||
| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_ARABIC_NASTALIQ | (missing) | StableICU 75| *(Born Stable)* |
|
||||
| usimplenumberformatter.h | void usnum_setMaximumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | (missing) | DraftICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_DUPLICATE_DECLARATION_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_DUPLICATE_OPTION_NAME_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_FORMATTING_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_MISSING_SELECTOR_ANNOTATION_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_NONEXHAUSTIVE_PATTERN_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_OPERAND_MISMATCH_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_SELECTOR_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_SYNTAX_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNKNOWN_FUNCTION_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNRESOLVED_VARIABLE_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_EXPRESSION_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_STATEMENT_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_VARIANT_KEY_MISMATCH_ERROR | (missing) | InternalICU 75.0
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_DUPLICATE_DECLARATION_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_DUPLICATE_OPTION_NAME_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_FORMATTING_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_MISSING_SELECTOR_ANNOTATION_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_NONEXHAUSTIVE_PATTERN_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_OPERAND_MISMATCH_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_SELECTOR_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_SYNTAX_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNKNOWN_FUNCTION_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNRESOLVED_VARIABLE_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_EXPRESSION_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_UNSUPPORTED_STATEMENT_ERROR | (missing) | InternalICU 75
|
||||
| utypes.h | <tt>enum</tt> UErrorCode::U_MF_VARIANT_KEY_MISMATCH_ERROR | (missing) | InternalICU 75
|
||||
|
||||
## Other
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -157,14 +157,17 @@ _uloc_addLikelySubtags(const char* localeID,
|
|||
return;
|
||||
}
|
||||
|
||||
if (lang.length() > 3) {
|
||||
if (lang.length() == 4 && script.isEmpty()) {
|
||||
if (lang.length() == 4) {
|
||||
if (script.isEmpty()) {
|
||||
script = std::move(lang);
|
||||
lang.clear();
|
||||
} else {
|
||||
err = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return;
|
||||
}
|
||||
} else if (lang.length() > 8) {
|
||||
err = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t trailingLength = (int32_t)uprv_strlen(trailing);
|
||||
|
|
|
@ -2003,6 +2003,7 @@ static const struct CurrencyList {
|
|||
{"XBC", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
|
||||
{"XBD", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
|
||||
{"XCD", UCURR_COMMON|UCURR_NON_DEPRECATED},
|
||||
{"XCG", UCURR_COMMON|UCURR_NON_DEPRECATED},
|
||||
{"XDR", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
|
||||
{"XEU", UCURR_UNCOMMON|UCURR_DEPRECATED},
|
||||
{"XFO", UCURR_UNCOMMON|UCURR_NON_DEPRECATED},
|
||||
|
|
|
@ -2406,7 +2406,7 @@ ultag_close(ULanguageTag* langtag) {
|
|||
ExtensionListEntry *curExt = langtag->extensions;
|
||||
while (curExt) {
|
||||
ExtensionListEntry *nextExt = curExt->next;
|
||||
uprv_free(curExt);
|
||||
delete curExt;
|
||||
curExt = nextExt;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -162,11 +162,11 @@ protected:
|
|||
T *ptr;
|
||||
private:
|
||||
// No comparison operators with other LocalPointerBases.
|
||||
bool operator==(const LocalPointerBase<T> &other);
|
||||
bool operator!=(const LocalPointerBase<T> &other);
|
||||
bool operator==(const LocalPointerBase<T> &other) = delete;
|
||||
bool operator!=(const LocalPointerBase<T> &other) = delete;
|
||||
// No ownership sharing: No copy constructor, no assignment operator.
|
||||
LocalPointerBase(const LocalPointerBase<T> &other);
|
||||
void operator=(const LocalPointerBase<T> &other);
|
||||
LocalPointerBase(const LocalPointerBase<T> &other) = delete;
|
||||
void operator=(const LocalPointerBase<T> &other) = delete;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -206,6 +206,17 @@
|
|||
# define U_PLATFORM U_PF_UNKNOWN
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \def U_REAL_MSVC
|
||||
* Defined if the compiler is the real MSVC compiler (and not something like
|
||||
* Clang setting _MSC_VER in order to compile Windows code that requires it).
|
||||
* Otherwise undefined.
|
||||
* @internal
|
||||
*/
|
||||
#if (defined(_MSC_VER) && !(defined(__clang__) && __clang__)) || defined(U_IN_DOXYGEN)
|
||||
# define U_REAL_MSVC
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \def CYGWINMSVC
|
||||
* Defined if this is Windows with Cygwin, but using MSVC rather than gcc.
|
||||
|
|
|
@ -417,7 +417,7 @@
|
|||
* \def UCONFIG_NO_MF2
|
||||
* This switch turns off the experimental MessageFormat 2.0 API.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
#ifndef UCONFIG_NO_MF2
|
||||
|
|
|
@ -399,6 +399,9 @@ uloc_setDefault(const char* localeID,
|
|||
/**
|
||||
* Gets the language code for the specified locale.
|
||||
*
|
||||
* This function may return with a failure error code for certain kinds of inputs
|
||||
* but does not fully check for well-formed locale IDs / language tags.
|
||||
*
|
||||
* @param localeID the locale to get the ISO language code with
|
||||
* @param language the language code for localeID
|
||||
* @param languageCapacity the size of the language buffer to store the
|
||||
|
@ -417,6 +420,9 @@ uloc_getLanguage(const char* localeID,
|
|||
/**
|
||||
* Gets the script code for the specified locale.
|
||||
*
|
||||
* This function may return with a failure error code for certain kinds of inputs
|
||||
* but does not fully check for well-formed locale IDs / language tags.
|
||||
*
|
||||
* @param localeID the locale to get the ISO language code with
|
||||
* @param script the language code for localeID
|
||||
* @param scriptCapacity the size of the language buffer to store the
|
||||
|
@ -435,6 +441,9 @@ uloc_getScript(const char* localeID,
|
|||
/**
|
||||
* Gets the country code for the specified locale.
|
||||
*
|
||||
* This function may return with a failure error code for certain kinds of inputs
|
||||
* but does not fully check for well-formed locale IDs / language tags.
|
||||
*
|
||||
* @param localeID the locale to get the country code with
|
||||
* @param country the country code for localeID
|
||||
* @param countryCapacity the size of the country buffer to store the
|
||||
|
@ -453,6 +462,9 @@ uloc_getCountry(const char* localeID,
|
|||
/**
|
||||
* Gets the variant code for the specified locale.
|
||||
*
|
||||
* This function may return with a failure error code for certain kinds of inputs
|
||||
* but does not fully check for well-formed locale IDs / language tags.
|
||||
*
|
||||
* @param localeID the locale to get the variant code with
|
||||
* @param variant the variant code for localeID
|
||||
* @param variantCapacity the size of the variant buffer to store the
|
||||
|
@ -471,6 +483,10 @@ uloc_getVariant(const char* localeID,
|
|||
|
||||
/**
|
||||
* Gets the full name for the specified locale.
|
||||
*
|
||||
* This function may return with a failure error code for certain kinds of inputs
|
||||
* but does not fully check for well-formed locale IDs / language tags.
|
||||
*
|
||||
* Note: This has the effect of 'canonicalizing' the ICU locale ID to
|
||||
* a certain extent. Upper and lower case are set as needed.
|
||||
* It does NOT map aliased names in any way.
|
||||
|
|
|
@ -571,19 +571,19 @@ typedef enum UErrorCode {
|
|||
U_NUMBER_SKELETON_SYNTAX_ERROR, /**< The number skeleton passed to C++ NumberFormatter or C UNumberFormatter was invalid or contained a syntax error. @stable ICU 62 */
|
||||
|
||||
/* MessageFormat 2.0 errors */
|
||||
U_MF_UNRESOLVED_VARIABLE_ERROR, /**< A variable is referred to but not bound by any definition @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_SYNTAX_ERROR, /**< Includes all syntax errors @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNKNOWN_FUNCTION_ERROR, /**< An annotation refers to a function not defined by the standard or custom function registry @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_VARIANT_KEY_MISMATCH_ERROR, /**< In a match-construct, one or more variants had a different number of keys from the number of selectors @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_FORMATTING_ERROR, /**< Covers all runtime errors: for example, an internally inconsistent set of options. @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_NONEXHAUSTIVE_PATTERN_ERROR, /**< In a match-construct, the variants do not cover all possible values @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_DUPLICATE_OPTION_NAME_ERROR, /**< In an annotation, the same option name appears more than once @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_SELECTOR_ERROR, /**< A selector function is applied to an operand of the wrong type @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_MISSING_SELECTOR_ANNOTATION_ERROR, /**< A selector expression evaluates to an unannotated operand. @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_DUPLICATE_DECLARATION_ERROR, /**< The same variable is declared in more than one .local or .input declaration. @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_OPERAND_MISMATCH_ERROR, /**< An operand provided to a function does not have the required form for that function @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNSUPPORTED_STATEMENT_ERROR, /**< A message includes a reserved statement. @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNSUPPORTED_EXPRESSION_ERROR, /**< A message includes syntax reserved for future standardization or private implementation use. @internal ICU 75.0 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNRESOLVED_VARIABLE_ERROR, /**< A variable is referred to but not bound by any definition @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_SYNTAX_ERROR, /**< Includes all syntax errors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNKNOWN_FUNCTION_ERROR, /**< An annotation refers to a function not defined by the standard or custom function registry @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_VARIANT_KEY_MISMATCH_ERROR, /**< In a match-construct, one or more variants had a different number of keys from the number of selectors @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_FORMATTING_ERROR, /**< Covers all runtime errors: for example, an internally inconsistent set of options. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_NONEXHAUSTIVE_PATTERN_ERROR, /**< In a match-construct, the variants do not cover all possible values @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_DUPLICATE_OPTION_NAME_ERROR, /**< In an annotation, the same option name appears more than once @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_SELECTOR_ERROR, /**< A selector function is applied to an operand of the wrong type @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_MISSING_SELECTOR_ANNOTATION_ERROR, /**< A selector expression evaluates to an unannotated operand. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_DUPLICATE_DECLARATION_ERROR, /**< The same variable is declared in more than one .local or .input declaration. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_OPERAND_MISMATCH_ERROR, /**< An operand provided to a function does not have the required form for that function @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNSUPPORTED_STATEMENT_ERROR, /**< A message includes a reserved statement. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
U_MF_UNSUPPORTED_EXPRESSION_ERROR, /**< A message includes syntax reserved for future standardization or private implementation use. @internal ICU 75 technology preview @deprecated This API is for technology preview only. */
|
||||
#ifndef U_HIDE_DEPRECATED_API
|
||||
/**
|
||||
* One more than the highest normal formatting API error code.
|
||||
|
|
|
@ -1199,8 +1199,8 @@ supplementalData:table(nofallback){
|
|||
CW{
|
||||
{
|
||||
from:intvector{
|
||||
398,
|
||||
-1834351104,
|
||||
405,
|
||||
-363122176,
|
||||
}
|
||||
id{"XCG"}
|
||||
}
|
||||
|
@ -1211,8 +1211,8 @@ supplementalData:table(nofallback){
|
|||
}
|
||||
id{"ANG"}
|
||||
to:intvector{
|
||||
400,
|
||||
1819481599,
|
||||
407,
|
||||
-1004256769,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3960,8 +3960,8 @@ supplementalData:table(nofallback){
|
|||
SX{
|
||||
{
|
||||
from:intvector{
|
||||
398,
|
||||
-1834351104,
|
||||
405,
|
||||
-363122176,
|
||||
}
|
||||
id{"XCG"}
|
||||
}
|
||||
|
@ -3972,8 +3972,8 @@ supplementalData:table(nofallback){
|
|||
}
|
||||
id{"ANG"}
|
||||
to:intvector{
|
||||
400,
|
||||
1819481599,
|
||||
407,
|
||||
-1004256769,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!--
|
||||
Copyright © 1991-2024 Unicode, Inc.
|
||||
For terms of use, see http://www.unicode.org/copyright.html
|
||||
SPDX-License-Identifier: Unicode-DFS-2016
|
||||
SPDX-License-Identifier: Unicode-3.0
|
||||
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
-->
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!--
|
||||
Copyright © 1991-2021 Unicode, Inc.
|
||||
For terms of use, see http://www.unicode.org/copyright.html
|
||||
SPDX-License-Identifier: Unicode-DFS-2016
|
||||
SPDX-License-Identifier: Unicode-3.0
|
||||
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
-->
|
||||
|
||||
|
|
|
@ -81,16 +81,16 @@ it{
|
|||
other{"0"}
|
||||
}
|
||||
1000000{
|
||||
one{"0 Mio ¤"}
|
||||
other{"0 Mio ¤"}
|
||||
one{"0 Mln ¤"}
|
||||
other{"0 Mln ¤"}
|
||||
}
|
||||
10000000{
|
||||
one{"00 Mio ¤"}
|
||||
other{"00 Mio ¤"}
|
||||
one{"00 Mln ¤"}
|
||||
other{"00 Mln ¤"}
|
||||
}
|
||||
100000000{
|
||||
one{"000 Mio ¤"}
|
||||
other{"000 Mio ¤"}
|
||||
one{"000 Mln ¤"}
|
||||
other{"000 Mln ¤"}
|
||||
}
|
||||
1000000000{
|
||||
one{"0 Mrd ¤"}
|
||||
|
@ -131,16 +131,16 @@ it{
|
|||
other{"0"}
|
||||
}
|
||||
1000000{
|
||||
one{"0 Mio"}
|
||||
other{"0 Mio"}
|
||||
one{"0 Mln"}
|
||||
other{"0 Mln"}
|
||||
}
|
||||
10000000{
|
||||
one{"00 Mio"}
|
||||
other{"00 Mio"}
|
||||
one{"00 Mln"}
|
||||
other{"00 Mln"}
|
||||
}
|
||||
100000000{
|
||||
one{"000 Mio"}
|
||||
other{"000 Mio"}
|
||||
one{"000 Mln"}
|
||||
other{"000 Mln"}
|
||||
}
|
||||
1000000000{
|
||||
one{"0 Mrd"}
|
||||
|
|
|
@ -215,10 +215,10 @@ ta{
|
|||
calendar{
|
||||
chinese{
|
||||
DateTimePatterns{
|
||||
"a h:mm:ss zzzz",
|
||||
"a h:mm:ss z",
|
||||
"a h:mm:ss",
|
||||
"a h:mm",
|
||||
"h:mm:ss a zzzz",
|
||||
"h:mm:ss a z",
|
||||
"h:mm:ss a",
|
||||
"h:mm a",
|
||||
"U MMMM d, EEEE",
|
||||
"U, d MMMM",
|
||||
"U, d MMM",
|
||||
|
@ -363,10 +363,10 @@ ta{
|
|||
}
|
||||
generic{
|
||||
DateTimePatterns{
|
||||
"a h:mm:ss zzzz",
|
||||
"a h:mm:ss z",
|
||||
"a h:mm:ss",
|
||||
"a h:mm",
|
||||
"h:mm:ss a zzzz",
|
||||
"h:mm:ss a z",
|
||||
"h:mm:ss a",
|
||||
"h:mm a",
|
||||
"EEEE, d MMMM, y G",
|
||||
"d MMMM, y G",
|
||||
"d MMM, y G",
|
||||
|
@ -400,8 +400,8 @@ ta{
|
|||
EBhm{"E B h:mm"}
|
||||
EBhms{"E B h:mm:ss"}
|
||||
Ed{"d E"}
|
||||
Ehm{"E a h:mm"}
|
||||
Ehms{"E a h:mm:ss"}
|
||||
Ehm{"E h:mm a"}
|
||||
Ehms{"E h:mm:ss a"}
|
||||
Gy{"y G"}
|
||||
GyMMM{"MMM y G"}
|
||||
GyMMMEd{"E, d MMM, y G"}
|
||||
|
@ -413,9 +413,9 @@ ta{
|
|||
MMMd{"d MMM"}
|
||||
MMdd{"dd-MM"}
|
||||
Md{"d/M"}
|
||||
h{"a h"}
|
||||
hm{"a h:mm"}
|
||||
hms{"a h:mm:ss"}
|
||||
h{"h a"}
|
||||
hm{"h:mm a"}
|
||||
hms{"h:mm:ss a"}
|
||||
y{"y G"}
|
||||
yyyy{"y G"}
|
||||
yyyyM{"M/y G"}
|
||||
|
@ -457,22 +457,22 @@ ta{
|
|||
}
|
||||
fallback{"{0} – {1}"}
|
||||
h{
|
||||
a{"a h – a h"}
|
||||
h{"a h–h"}
|
||||
a{"h a – h a"}
|
||||
h{"h–h a"}
|
||||
}
|
||||
hm{
|
||||
a{"a h:mm – a h:mm"}
|
||||
h{"a h:mm–h:mm"}
|
||||
m{"a h:mm–h:mm"}
|
||||
a{"h:mm a – h:mm a"}
|
||||
h{"h:mm–h:mm a"}
|
||||
m{"h:mm–h:mm a"}
|
||||
}
|
||||
hmv{
|
||||
a{"a h:mm – a h:mm v"}
|
||||
h{"a h:mm–h:mm v"}
|
||||
m{"a h:mm–h:mm v"}
|
||||
a{"h:mm – h:mm a v"}
|
||||
h{"h:mm–h:mm a v"}
|
||||
m{"h:mm–h:mm a v"}
|
||||
}
|
||||
hv{
|
||||
a{"a h – a h v"}
|
||||
h{"a h–h v"}
|
||||
a{"h a – h a v"}
|
||||
h{"h–h a v"}
|
||||
}
|
||||
y{
|
||||
y{"y – y G"}
|
||||
|
@ -512,19 +512,11 @@ ta{
|
|||
}
|
||||
}
|
||||
gregorian{
|
||||
AmPmMarkersAbbr{
|
||||
"AM",
|
||||
"பிற்பகல்",
|
||||
}
|
||||
AmPmMarkersNarrow{
|
||||
"மு.ப",
|
||||
"பி.ப",
|
||||
}
|
||||
DateTimePatterns{
|
||||
"a h:mm:ss zzzz",
|
||||
"a h:mm:ss z",
|
||||
"a h:mm:ss",
|
||||
"a h:mm",
|
||||
"h:mm:ss a zzzz",
|
||||
"h:mm:ss a z",
|
||||
"h:mm:ss a",
|
||||
"h:mm a",
|
||||
"EEEE, d MMMM, y",
|
||||
"d MMMM, y",
|
||||
"d MMM, y",
|
||||
|
@ -558,8 +550,8 @@ ta{
|
|||
EBhm{"E B h:mm"}
|
||||
EBhms{"E B h:mm:ss"}
|
||||
Ed{"d E"}
|
||||
Ehm{"E a h:mm"}
|
||||
Ehms{"E a h:mm:ss"}
|
||||
Ehm{"E h:mm a"}
|
||||
Ehms{"E h:mm:ss a"}
|
||||
GyMd{"d/M/y G"}
|
||||
MEd{"dd-MM, E"}
|
||||
MMMMW{
|
||||
|
@ -569,11 +561,11 @@ ta{
|
|||
MMMMd{"d MMMM"}
|
||||
MMdd{"dd-MM"}
|
||||
Md{"d/M"}
|
||||
h{"a h"}
|
||||
hm{"a h:mm"}
|
||||
hms{"a h:mm:ss"}
|
||||
hmsv{"a h:mm:ss v"}
|
||||
hmv{"a h:mm v"}
|
||||
h{"h a"}
|
||||
hm{"h:mm a"}
|
||||
hms{"h:mm:ss a"}
|
||||
hmsv{"h:mm:ss a v"}
|
||||
hmv{"h:mm a v"}
|
||||
yM{"M/y"}
|
||||
yMEd{"E, d/M/y"}
|
||||
yMM{"MM-y"}
|
||||
|
@ -657,14 +649,9 @@ ta{
|
|||
}
|
||||
}
|
||||
stand-alone{
|
||||
abbreviated{
|
||||
am{"முற்பகல்"}
|
||||
pm{"பிற்பகல்"}
|
||||
}
|
||||
narrow{
|
||||
afternoon1{"மதி."}
|
||||
afternoon2{"பிற்."}
|
||||
am{"மு.ப"}
|
||||
evening1{"மா."}
|
||||
evening2{"அந்தி மா."}
|
||||
midnight{"நள்."}
|
||||
|
@ -672,11 +659,6 @@ ta{
|
|||
morning2{"கா."}
|
||||
night1{"இ."}
|
||||
noon{"நண்."}
|
||||
pm{"பி.ப"}
|
||||
}
|
||||
wide{
|
||||
am{"முற்பகல்"}
|
||||
pm{"பிற்பகல்"}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -733,22 +715,22 @@ ta{
|
|||
}
|
||||
fallback{"{0} – {1}"}
|
||||
h{
|
||||
a{"a h – a h"}
|
||||
h{"a h–h"}
|
||||
a{"h a – h a"}
|
||||
h{"h–h a"}
|
||||
}
|
||||
hm{
|
||||
a{"a h:mm – a h:mm"}
|
||||
h{"a h:mm–h:mm"}
|
||||
m{"a h:mm–h:mm"}
|
||||
a{"h:mm a – h:mm a"}
|
||||
h{"h:mm–h:mm a"}
|
||||
m{"h:mm–h:mm a"}
|
||||
}
|
||||
hmv{
|
||||
a{"a h:mm – a h:mm v"}
|
||||
h{"a h:mm – h:mm v"}
|
||||
m{"a h:mm – h:mm v"}
|
||||
a{"h:mm a – h:mm a v"}
|
||||
h{"h:mm – h:mm a v"}
|
||||
m{"h:mm – h:mm a v"}
|
||||
}
|
||||
hv{
|
||||
a{"a h – a h v"}
|
||||
h{"a h – h v"}
|
||||
a{"h a – h a v"}
|
||||
h{"h – h a v"}
|
||||
}
|
||||
y{
|
||||
y{"y – y"}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -36,6 +36,10 @@ metadata:table(nofallback){
|
|||
reason{"deprecated"}
|
||||
replacement{"ami"}
|
||||
}
|
||||
ajp{
|
||||
reason{"deprecated"}
|
||||
replacement{"apc"}
|
||||
}
|
||||
ajt{
|
||||
reason{"deprecated"}
|
||||
replacement{"aeb"}
|
||||
|
@ -824,6 +828,10 @@ metadata:table(nofallback){
|
|||
reason{"deprecated"}
|
||||
replacement{"kml"}
|
||||
}
|
||||
kgm{
|
||||
reason{"deprecated"}
|
||||
replacement{"plu"}
|
||||
}
|
||||
khk{
|
||||
reason{"macrolanguage"}
|
||||
replacement{"mn"}
|
||||
|
@ -1184,6 +1192,10 @@ metadata:table(nofallback){
|
|||
reason{"overlong"}
|
||||
replacement{"nb"}
|
||||
}
|
||||
nom{
|
||||
reason{"deprecated"}
|
||||
replacement{"cbr"}
|
||||
}
|
||||
noo{
|
||||
reason{"deprecated"}
|
||||
replacement{"dtd"}
|
||||
|
@ -1276,6 +1288,10 @@ metadata:table(nofallback){
|
|||
reason{"deprecated"}
|
||||
replacement{"huw"}
|
||||
}
|
||||
pmk{
|
||||
reason{"deprecated"}
|
||||
replacement{"crr"}
|
||||
}
|
||||
pmu{
|
||||
reason{"deprecated"}
|
||||
replacement{"phr"}
|
||||
|
@ -1300,6 +1316,10 @@ metadata:table(nofallback){
|
|||
reason{"deprecated"}
|
||||
replacement{"lcq"}
|
||||
}
|
||||
prp{
|
||||
reason{"deprecated"}
|
||||
replacement{"gu"}
|
||||
}
|
||||
prs{
|
||||
reason{"overlong"}
|
||||
replacement{"fa_AF"}
|
||||
|
@ -1580,6 +1600,10 @@ metadata:table(nofallback){
|
|||
reason{"macrolanguage"}
|
||||
replacement{"sw"}
|
||||
}
|
||||
szd{
|
||||
reason{"deprecated"}
|
||||
replacement{"umi"}
|
||||
}
|
||||
tah{
|
||||
reason{"overlong"}
|
||||
replacement{"ty"}
|
||||
|
@ -1656,6 +1680,10 @@ metadata:table(nofallback){
|
|||
reason{"deprecated"}
|
||||
replacement{"weo"}
|
||||
}
|
||||
tmk{
|
||||
reason{"deprecated"}
|
||||
replacement{"tdg"}
|
||||
}
|
||||
tmp{
|
||||
reason{"deprecated"}
|
||||
replacement{"tyj"}
|
||||
|
@ -1672,6 +1700,10 @@ metadata:table(nofallback){
|
|||
reason{"overlong"}
|
||||
replacement{"to"}
|
||||
}
|
||||
tpw{
|
||||
reason{"deprecated"}
|
||||
replacement{"tpn"}
|
||||
}
|
||||
tsf{
|
||||
reason{"deprecated"}
|
||||
replacement{"taj"}
|
||||
|
@ -1844,6 +1876,10 @@ metadata:table(nofallback){
|
|||
reason{"macrolanguage"}
|
||||
replacement{"den"}
|
||||
}
|
||||
xss{
|
||||
reason{"deprecated"}
|
||||
replacement{"zko"}
|
||||
}
|
||||
ybd{
|
||||
reason{"deprecated"}
|
||||
replacement{"rki"}
|
||||
|
@ -1944,6 +1980,10 @@ metadata:table(nofallback){
|
|||
reason{"deprecated"}
|
||||
replacement{"scv"}
|
||||
}
|
||||
zkb{
|
||||
reason{"deprecated"}
|
||||
replacement{"kjh"}
|
||||
}
|
||||
zsm{
|
||||
reason{"macrolanguage"}
|
||||
replacement{"ms"}
|
||||
|
|
|
@ -4434,7 +4434,6 @@ supplementalData:table(nofallback){
|
|||
"ADP",
|
||||
"AFA",
|
||||
"ALK",
|
||||
"ANG",
|
||||
"AOK",
|
||||
"AON",
|
||||
"AOR",
|
||||
|
@ -4580,6 +4579,7 @@ supplementalData:table(nofallback){
|
|||
"AFN",
|
||||
"ALL",
|
||||
"AMD",
|
||||
"ANG",
|
||||
"AOA",
|
||||
"ARS",
|
||||
"AUD",
|
||||
|
@ -4738,6 +4738,7 @@ supplementalData:table(nofallback){
|
|||
"adp",
|
||||
"agp",
|
||||
"ais",
|
||||
"ajp",
|
||||
"ajt~u",
|
||||
"als",
|
||||
"aoh",
|
||||
|
@ -4801,7 +4802,6 @@ supplementalData:table(nofallback){
|
|||
"dud",
|
||||
"duj",
|
||||
"dwl",
|
||||
"dzd",
|
||||
"ekc",
|
||||
"ekk",
|
||||
"elp",
|
||||
|
@ -4846,6 +4846,7 @@ supplementalData:table(nofallback){
|
|||
"kdv",
|
||||
"kgc~d",
|
||||
"kgh",
|
||||
"kgm",
|
||||
"khk",
|
||||
"kjf",
|
||||
"kmr",
|
||||
|
@ -4857,6 +4858,7 @@ supplementalData:table(nofallback){
|
|||
"kpp",
|
||||
"kpv",
|
||||
"krm",
|
||||
"ksa",
|
||||
"ktr",
|
||||
"kvs",
|
||||
"kwq",
|
||||
|
@ -4906,6 +4908,7 @@ supplementalData:table(nofallback){
|
|||
"nlr",
|
||||
"nns",
|
||||
"nnx",
|
||||
"nom",
|
||||
"noo",
|
||||
"npi",
|
||||
"nts",
|
||||
|
@ -4921,15 +4924,18 @@ supplementalData:table(nofallback){
|
|||
"pes",
|
||||
"pgy",
|
||||
"pii",
|
||||
"plj",
|
||||
"plp",
|
||||
"plt",
|
||||
"pmc",
|
||||
"pmk",
|
||||
"pmu",
|
||||
"pnb",
|
||||
"pod",
|
||||
"ppa",
|
||||
"ppr",
|
||||
"prb",
|
||||
"prp",
|
||||
"prs",
|
||||
"pry",
|
||||
"puk",
|
||||
|
@ -4947,6 +4953,7 @@ supplementalData:table(nofallback){
|
|||
"sgo",
|
||||
"sh",
|
||||
"skk",
|
||||
"slq",
|
||||
"smd",
|
||||
"snb",
|
||||
"snh",
|
||||
|
@ -4956,6 +4963,7 @@ supplementalData:table(nofallback){
|
|||
"svr",
|
||||
"swc",
|
||||
"swh",
|
||||
"szd",
|
||||
"tbb",
|
||||
"tdu",
|
||||
"tgg",
|
||||
|
@ -4965,9 +4973,11 @@ supplementalData:table(nofallback){
|
|||
"tkk",
|
||||
"tl",
|
||||
"tlw",
|
||||
"tmk",
|
||||
"tmp",
|
||||
"tne~f",
|
||||
"toe",
|
||||
"tpw",
|
||||
"tsf",
|
||||
"ttq",
|
||||
"tw",
|
||||
|
@ -4992,6 +5002,7 @@ supplementalData:table(nofallback){
|
|||
"xrq",
|
||||
"xsj",
|
||||
"xsl",
|
||||
"xss",
|
||||
"xtz",
|
||||
"ybd",
|
||||
"ydd",
|
||||
|
@ -5006,7 +5017,9 @@ supplementalData:table(nofallback){
|
|||
"yuu",
|
||||
"zai",
|
||||
"zir",
|
||||
"zkb",
|
||||
"zsm",
|
||||
"zua",
|
||||
"zyb",
|
||||
}
|
||||
private_use{
|
||||
|
@ -5075,7 +5088,6 @@ supplementalData:table(nofallback){
|
|||
"ajg",
|
||||
"aji",
|
||||
"ajn",
|
||||
"ajp",
|
||||
"ajs",
|
||||
"ajw",
|
||||
"ajz",
|
||||
|
@ -5344,6 +5356,7 @@ supplementalData:table(nofallback){
|
|||
"cwe",
|
||||
"cwg",
|
||||
"cwt",
|
||||
"cxh",
|
||||
"cy",
|
||||
"cya~b",
|
||||
"cyo",
|
||||
|
@ -5441,7 +5454,7 @@ supplementalData:table(nofallback){
|
|||
"dsb",
|
||||
"dse",
|
||||
"dsh~i",
|
||||
"dsl",
|
||||
"dsk~l",
|
||||
"dsn~o",
|
||||
"dsq",
|
||||
"dsz",
|
||||
|
@ -5469,11 +5482,12 @@ supplementalData:table(nofallback){
|
|||
"dyg",
|
||||
"dyi",
|
||||
"dym~o",
|
||||
"dyr",
|
||||
"dyu",
|
||||
"dyy",
|
||||
"dz",
|
||||
"dza",
|
||||
"dze",
|
||||
"dzd~e",
|
||||
"dzg",
|
||||
"dzl",
|
||||
"dzn",
|
||||
|
@ -5558,6 +5572,7 @@ supplementalData:table(nofallback){
|
|||
"etx",
|
||||
"etz",
|
||||
"eu",
|
||||
"eud",
|
||||
"euq",
|
||||
"eve",
|
||||
"evh",
|
||||
|
@ -5890,7 +5905,7 @@ supplementalData:table(nofallback){
|
|||
"ijn~o",
|
||||
"ijs",
|
||||
"ik",
|
||||
"iki",
|
||||
"ikh~i",
|
||||
"ikk~l",
|
||||
"iko~p",
|
||||
"ikr~t",
|
||||
|
@ -5962,6 +5977,7 @@ supplementalData:table(nofallback){
|
|||
"iyo",
|
||||
"iyx",
|
||||
"izh",
|
||||
"izm",
|
||||
"izr",
|
||||
"izz",
|
||||
"ja",
|
||||
|
@ -6065,7 +6081,8 @@ supplementalData:table(nofallback){
|
|||
"kg",
|
||||
"kga~b",
|
||||
"kge~g",
|
||||
"kgi~y",
|
||||
"kgi~l",
|
||||
"kgn~y",
|
||||
"kha~j",
|
||||
"khl",
|
||||
"khn~z",
|
||||
|
@ -6107,7 +6124,7 @@ supplementalData:table(nofallback){
|
|||
"krn~p",
|
||||
"krr~z",
|
||||
"ks",
|
||||
"ksa~z",
|
||||
"ksb~z",
|
||||
"kta~q",
|
||||
"kts~z",
|
||||
"ku",
|
||||
|
@ -6158,8 +6175,7 @@ supplementalData:table(nofallback){
|
|||
"lga~b",
|
||||
"lgg~i",
|
||||
"lgk~o",
|
||||
"lgq~r",
|
||||
"lgt~u",
|
||||
"lgq~u",
|
||||
"lgz",
|
||||
"lha",
|
||||
"lhh~i",
|
||||
|
@ -6237,7 +6253,7 @@ supplementalData:table(nofallback){
|
|||
"lv",
|
||||
"lva",
|
||||
"lvi",
|
||||
"lvk",
|
||||
"lvk~l",
|
||||
"lvu",
|
||||
"lwa",
|
||||
"lwe",
|
||||
|
@ -6399,7 +6415,8 @@ supplementalData:table(nofallback){
|
|||
"nny~z",
|
||||
"no",
|
||||
"noa",
|
||||
"noc~n",
|
||||
"noc~l",
|
||||
"non",
|
||||
"nop~q",
|
||||
"nos~w",
|
||||
"noy~z",
|
||||
|
@ -6462,7 +6479,7 @@ supplementalData:table(nofallback){
|
|||
"nzi",
|
||||
"nzk",
|
||||
"nzm",
|
||||
"nzs",
|
||||
"nzr~s",
|
||||
"nzu",
|
||||
"nzy~z",
|
||||
"oaa",
|
||||
|
@ -6623,14 +6640,15 @@ supplementalData:table(nofallback){
|
|||
"pkr~u",
|
||||
"pl",
|
||||
"pla~h",
|
||||
"plj~l",
|
||||
"plk~l",
|
||||
"pln~o",
|
||||
"plq~s",
|
||||
"plu~w",
|
||||
"ply~z",
|
||||
"pma~b",
|
||||
"pmd~f",
|
||||
"pmh~o",
|
||||
"pmh~j",
|
||||
"pml~o",
|
||||
"pmq~t",
|
||||
"pmw~z",
|
||||
"pna",
|
||||
|
@ -6652,7 +6670,8 @@ supplementalData:table(nofallback){
|
|||
"pqw",
|
||||
"pra",
|
||||
"prc~i",
|
||||
"prk~r",
|
||||
"prk~o",
|
||||
"prq~r",
|
||||
"prt~u",
|
||||
"prw~x",
|
||||
"prz",
|
||||
|
@ -6687,6 +6706,7 @@ supplementalData:table(nofallback){
|
|||
"pys",
|
||||
"pyu",
|
||||
"pyx~y",
|
||||
"pze",
|
||||
"pzh",
|
||||
"pzn",
|
||||
"qu",
|
||||
|
@ -6780,6 +6800,7 @@ supplementalData:table(nofallback){
|
|||
"rrt",
|
||||
"rsb",
|
||||
"rsk~n",
|
||||
"rsw",
|
||||
"rtc",
|
||||
"rth",
|
||||
"rtm",
|
||||
|
@ -6856,7 +6877,8 @@ supplementalData:table(nofallback){
|
|||
"sla",
|
||||
"slc~j",
|
||||
"sll~n",
|
||||
"slp~u",
|
||||
"slp",
|
||||
"slr~u",
|
||||
"slw~z",
|
||||
"sm",
|
||||
"sma~c",
|
||||
|
@ -6927,7 +6949,8 @@ supplementalData:table(nofallback){
|
|||
"syk~o",
|
||||
"syr~s",
|
||||
"syw~y",
|
||||
"sza~e",
|
||||
"sza~c",
|
||||
"sze",
|
||||
"szg",
|
||||
"szl",
|
||||
"szn",
|
||||
|
@ -6989,7 +7012,8 @@ supplementalData:table(nofallback){
|
|||
"tla~d",
|
||||
"tlf~v",
|
||||
"tlx~y",
|
||||
"tma~o",
|
||||
"tma~j",
|
||||
"tml~o",
|
||||
"tmq~w",
|
||||
"tmy~z",
|
||||
"tn",
|
||||
|
@ -7005,7 +7029,8 @@ supplementalData:table(nofallback){
|
|||
"tpc",
|
||||
"tpe~g",
|
||||
"tpi~r",
|
||||
"tpt~z",
|
||||
"tpt~v",
|
||||
"tpx~z",
|
||||
"tqb",
|
||||
"tql~r",
|
||||
"tqt~u",
|
||||
|
@ -7025,6 +7050,7 @@ supplementalData:table(nofallback){
|
|||
"tus~z",
|
||||
"tva",
|
||||
"tvd~e",
|
||||
"tvi",
|
||||
"tvk~o",
|
||||
"tvs~u",
|
||||
"tvw~y",
|
||||
|
@ -7093,6 +7119,7 @@ supplementalData:table(nofallback){
|
|||
"ulk~n",
|
||||
"ulu",
|
||||
"ulw",
|
||||
"uly",
|
||||
"uma~d",
|
||||
"umg",
|
||||
"umi",
|
||||
|
@ -7160,6 +7187,7 @@ supplementalData:table(nofallback){
|
|||
"vin",
|
||||
"vis~t",
|
||||
"viv",
|
||||
"vjk",
|
||||
"vka",
|
||||
"vkj~p",
|
||||
"vkt~u",
|
||||
|
@ -7271,6 +7299,7 @@ supplementalData:table(nofallback){
|
|||
"wsk",
|
||||
"wsr~s",
|
||||
"wsu~v",
|
||||
"wtb",
|
||||
"wtf",
|
||||
"wth~i",
|
||||
"wtk",
|
||||
|
@ -7388,7 +7417,7 @@ supplementalData:table(nofallback){
|
|||
"xrw",
|
||||
"xsa~e",
|
||||
"xsh~i",
|
||||
"xsm~s",
|
||||
"xsm~r",
|
||||
"xsu~v",
|
||||
"xsy",
|
||||
"xta~e",
|
||||
|
@ -7435,6 +7464,7 @@ supplementalData:table(nofallback){
|
|||
"ycl",
|
||||
"ycn",
|
||||
"ycp",
|
||||
"ycr",
|
||||
"yda",
|
||||
"yde",
|
||||
"ydg",
|
||||
|
@ -7464,8 +7494,7 @@ supplementalData:table(nofallback){
|
|||
"yix",
|
||||
"yiz",
|
||||
"yka",
|
||||
"ykg",
|
||||
"yki",
|
||||
"ykg~i",
|
||||
"ykk~o",
|
||||
"ykr",
|
||||
"ykt~u",
|
||||
|
@ -7559,7 +7588,7 @@ supplementalData:table(nofallback){
|
|||
"zdj",
|
||||
"zea",
|
||||
"zeg~h",
|
||||
"zen",
|
||||
"zem~n",
|
||||
"zga~b",
|
||||
"zgh",
|
||||
"zgm~n",
|
||||
|
@ -7574,7 +7603,7 @@ supplementalData:table(nofallback){
|
|||
"zik~n",
|
||||
"ziw",
|
||||
"ziz",
|
||||
"zka~b",
|
||||
"zka",
|
||||
"zkd",
|
||||
"zkg~h",
|
||||
"zkk",
|
||||
|
@ -7588,6 +7617,7 @@ supplementalData:table(nofallback){
|
|||
"zlm~n",
|
||||
"zlq",
|
||||
"zls",
|
||||
"zlu",
|
||||
"zlw",
|
||||
"zma~z",
|
||||
"zna",
|
||||
|
@ -7617,7 +7647,6 @@ supplementalData:table(nofallback){
|
|||
"zts~u",
|
||||
"ztx~y",
|
||||
"zu",
|
||||
"zua",
|
||||
"zuh",
|
||||
"zum~n",
|
||||
"zuy",
|
||||
|
@ -11902,8 +11931,11 @@ supplementalData:table(nofallback){
|
|||
"barla",
|
||||
"basiceng",
|
||||
"bauddha",
|
||||
"bciav",
|
||||
"bcizbl",
|
||||
"biscayan",
|
||||
"biske",
|
||||
"blasl",
|
||||
"bohoric",
|
||||
"boont",
|
||||
"bornholm",
|
||||
|
@ -18696,12 +18728,6 @@ supplementalData:table(nofallback){
|
|||
"10",
|
||||
"1",
|
||||
}
|
||||
{
|
||||
"ajp",
|
||||
"ar",
|
||||
"10",
|
||||
"1",
|
||||
}
|
||||
{
|
||||
"apc",
|
||||
"ar",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
// Build date: Wed Feb 7 16:30:19 2024
|
||||
// tz database: ftp://ftp.iana.org/tz/
|
||||
// tz version: 2024a
|
||||
// ICU version: 75.0.1
|
||||
// ICU version: 75.1
|
||||
//---------------------------------------------------------
|
||||
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
|
||||
// >> !!! >>> DO NOT EDIT <<< !!! <<
|
||||
|
|
|
@ -70,7 +70,7 @@ ff_Adlm{
|
|||
BS{"𞤄𞤢𞤸𞤢𞤥𞤢𞥄𞤧"}
|
||||
BT{"𞤄𞤵𞥅𞤼𞤢𞥄𞤲"}
|
||||
BV{"𞤅𞤵𞤪𞤭𞥅𞤪𞤫 𞤄𞤵𞥅𞤾𞤫𞥅"}
|
||||
BW{"𞤄𞤮𞤼𞤧𞤵𞤱𞤢𞥄𞤲𞤢"}
|
||||
BW{"𞤄𞤮𞤼𞤧𞤵𞤱𞤢𞥄𞤲𞤢"}
|
||||
BY{"𞤄𞤫𞤤𞤢𞤪𞤵𞥅𞤧"}
|
||||
BZ{"𞤄𞤫𞤤𞤭𞥅𞥁"}
|
||||
CA{"𞤑𞤢𞤲𞤢𞤣𞤢𞥄"}
|
||||
|
|
|
@ -533,7 +533,7 @@ ff_Adlm{
|
|||
ec{"𞤅𞤢𞥄𞤱-𞤆𞤮𞤤𞤮𞥅"}
|
||||
}
|
||||
"America:Scoresbysund"{
|
||||
ec{"𞤋𞤼𞥆𞤮𞤳𞤮𞤪𞤼𞤮𞥅𞤪𞤥𞤭𞥅𞤼"}
|
||||
ec{"𞤋𞤼𞥆𞤮𞤳𞤮𞤪𞤼𞤮𞥅𞤪𞤥𞤭𞥅𞤼"}
|
||||
}
|
||||
"America:Sitka"{
|
||||
ec{"𞤅𞤭𞤼𞤳𞤢"}
|
||||
|
|
|
@ -189,10 +189,25 @@ FunctionOptions MessageFormatter::resolveOptions(const Environment& env, const O
|
|||
}
|
||||
|
||||
if (isFormatter(functionName)) {
|
||||
const Formatter& formatterImpl = getFormatter(context, functionName, status);
|
||||
LocalPointer<Formatter> formatterImpl(getFormatter(functionName, status));
|
||||
if (U_FAILURE(status)) {
|
||||
if (status == U_MF_FORMATTING_ERROR) {
|
||||
errs.setFormattingError(functionName, status);
|
||||
status = U_ZERO_ERROR;
|
||||
return {};
|
||||
}
|
||||
if (status == U_MF_UNKNOWN_FUNCTION_ERROR) {
|
||||
errs.setUnknownFunction(functionName, status);
|
||||
status = U_ZERO_ERROR;
|
||||
return {};
|
||||
}
|
||||
// Other errors are non-recoverable
|
||||
return {};
|
||||
}
|
||||
U_ASSERT(formatterImpl != nullptr);
|
||||
|
||||
UErrorCode savedStatus = status;
|
||||
FormattedPlaceholder result = formatterImpl.format(std::move(argument), std::move(options), status);
|
||||
FormattedPlaceholder result = formatterImpl->format(std::move(argument), std::move(options), status);
|
||||
// Update errors
|
||||
if (savedStatus != status) {
|
||||
if (U_FAILURE(status)) {
|
||||
|
|
|
@ -24,16 +24,15 @@ namespace message2 {
|
|||
// Helpers
|
||||
|
||||
template<typename T>
|
||||
static T* copyArray(const T* source, int32_t& len) { // `len` is an in/out param
|
||||
if (source == nullptr) {
|
||||
len = 0;
|
||||
static T* copyArray(const T* source, int32_t len, UErrorCode& status) {
|
||||
if (U_FAILURE(status)) {
|
||||
return nullptr;
|
||||
}
|
||||
U_ASSERT(source != nullptr);
|
||||
U_ASSERT(len >= 0);
|
||||
T* dest = new T[len];
|
||||
if (dest == nullptr) {
|
||||
// Set length to 0 to prevent the
|
||||
// array from being accessed
|
||||
len = 0;
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else {
|
||||
for (int32_t i = 0; i < len; i++) {
|
||||
dest[i] = source[i];
|
||||
|
@ -43,13 +42,14 @@ namespace message2 {
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
static T* copyVectorToArray(const UVector& source, int32_t& len) {
|
||||
len = source.size();
|
||||
static T* copyVectorToArray(const UVector& source, UErrorCode& status) {
|
||||
if (U_FAILURE(status)) {
|
||||
return nullptr;
|
||||
}
|
||||
int32_t len = source.size();
|
||||
T* dest = new T[len];
|
||||
if (dest == nullptr) {
|
||||
// Set length to 0 to prevent the
|
||||
// array from being accessed
|
||||
len = 0;
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else {
|
||||
for (int32_t i = 0; i < len; i++) {
|
||||
dest[i] = *(static_cast<T*>(source.elementAt(i)));
|
||||
|
@ -59,19 +59,21 @@ namespace message2 {
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
static T* moveVectorToArray(UVector& source, int32_t& len) {
|
||||
len = source.size();
|
||||
static T* moveVectorToArray(UVector& source, UErrorCode& status) {
|
||||
if (U_FAILURE(status)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int32_t len = source.size();
|
||||
T* dest = new T[len];
|
||||
if (dest == nullptr) {
|
||||
// Set length to 0 to prevent the
|
||||
// array from being accessed
|
||||
len = 0;
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else {
|
||||
for (int32_t i = 0; i < len; i++) {
|
||||
dest[i] = std::move(*static_cast<T*>(source.elementAt(i)));
|
||||
}
|
||||
source.removeAllElements();
|
||||
}
|
||||
source.removeAllElements();
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
// © 2024 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#ifndef U_HIDE_DEPRECATED_API
|
||||
|
||||
#ifndef MESSAGEFORMAT2_CACHED_FORMATTERS_H
|
||||
#define MESSAGEFORMAT2_CACHED_FORMATTERS_H
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#if !UCONFIG_NO_MF2
|
||||
|
||||
#include "unicode/messageformat2_data_model_names.h"
|
||||
#include "unicode/messageformat2_function_registry.h"
|
||||
#include "hash.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace message2 {
|
||||
|
||||
using namespace data_model;
|
||||
|
||||
// Formatter cache
|
||||
// --------------
|
||||
|
||||
class MessageFormatter;
|
||||
|
||||
// Map from function names to Formatters
|
||||
class CachedFormatters : public UObject {
|
||||
private:
|
||||
friend class MessageFormatter;
|
||||
|
||||
// Maps stringified FunctionNames onto Formatter*
|
||||
// Adopts its values
|
||||
Hashtable cache;
|
||||
CachedFormatters() { cache.setValueDeleter(uprv_deleteUObject); }
|
||||
public:
|
||||
// Returns a pointer because Formatter is an abstract class
|
||||
const Formatter* getFormatter(const FunctionName& f) {
|
||||
return static_cast<const Formatter*>(cache.get(f));
|
||||
}
|
||||
// Adopts its argument
|
||||
void adoptFormatter(const FunctionName& f, Formatter* val, UErrorCode& status) {
|
||||
cache.put(f, val, status);
|
||||
}
|
||||
CachedFormatters& operator=(const CachedFormatters&) = delete;
|
||||
|
||||
virtual ~CachedFormatters();
|
||||
};
|
||||
|
||||
} // namespace message2
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_MF2 */
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
|
||||
#endif /* U_SHOW_CPLUSPLUS_API */
|
||||
|
||||
#endif // MESSAGEFORMAT2_CACHED_FORMATTERS_H
|
||||
|
||||
#endif // U_HIDE_DEPRECATED_API
|
||||
// eof
|
|
@ -77,15 +77,10 @@ SelectorKeys::Builder::~Builder() {
|
|||
}
|
||||
|
||||
SelectorKeys::SelectorKeys(const UVector& ks, UErrorCode& status) : len(ks.size()) {
|
||||
Key* result = copyVectorToArray<Key>(ks, status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
Key* result = copyVectorToArray<Key>(ks, len);
|
||||
if (result == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
len = 0;
|
||||
return;
|
||||
}
|
||||
keys.adoptInstead(result);
|
||||
}
|
||||
|
||||
|
@ -95,7 +90,13 @@ SelectorKeys& SelectorKeys::operator=(SelectorKeys other) noexcept {
|
|||
}
|
||||
|
||||
SelectorKeys::SelectorKeys(const SelectorKeys& other) : len(other.len) {
|
||||
keys.adoptInstead(copyArray(other.keys.getAlias(), len));
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
if (len != 0) {
|
||||
keys.adoptInstead(copyArray(other.keys.getAlias(), len, localErrorCode));
|
||||
}
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
SelectorKeys::~SelectorKeys() {
|
||||
|
@ -198,9 +199,18 @@ Key::~Key() {}
|
|||
// ------------ Reserved
|
||||
|
||||
// Copy constructor
|
||||
Reserved::Reserved(const Reserved& other) {
|
||||
len = other.len;
|
||||
parts.adoptInstead(copyArray(other.parts.getAlias(), len));
|
||||
Reserved::Reserved(const Reserved& other) : len(other.len) {
|
||||
U_ASSERT(!other.bogus);
|
||||
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
if (len == 0) {
|
||||
parts.adoptInstead(nullptr);
|
||||
} else {
|
||||
parts.adoptInstead(copyArray(other.parts.getAlias(), len, localErrorCode));
|
||||
}
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reserved& Reserved::operator=(Reserved other) noexcept {
|
||||
|
@ -212,14 +222,16 @@ Reserved::Reserved(const UVector& ps, UErrorCode& status) noexcept : len(ps.size
|
|||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
parts = LocalArray<Literal>(copyVectorToArray<Literal>(ps, len));
|
||||
parts = LocalArray<Literal>(copyVectorToArray<Literal>(ps, status));
|
||||
}
|
||||
|
||||
int32_t Reserved::numParts() const {
|
||||
U_ASSERT(!bogus);
|
||||
return len;
|
||||
}
|
||||
|
||||
const Literal& Reserved::getPart(int32_t i) const {
|
||||
U_ASSERT(!bogus);
|
||||
U_ASSERT(i < numParts());
|
||||
return parts[i];
|
||||
}
|
||||
|
@ -257,14 +269,10 @@ Reserved::~Reserved() {
|
|||
|
||||
//------------------------ Operator
|
||||
|
||||
OptionMap::OptionMap(const UVector& opts, UErrorCode& status) {
|
||||
CHECK_ERROR(status);
|
||||
|
||||
len = opts.size();
|
||||
Option* result = copyVectorToArray<Option>(opts, len);
|
||||
if (result == nullptr) {
|
||||
OptionMap::OptionMap(const UVector& opts, UErrorCode& status) : len(opts.size()) {
|
||||
Option* result = copyVectorToArray<Option>(opts, status);
|
||||
if (U_FAILURE(status)) {
|
||||
bogus = true;
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
options.adoptInstead(result);
|
||||
|
@ -273,8 +281,9 @@ OptionMap::OptionMap(const UVector& opts, UErrorCode& status) {
|
|||
|
||||
OptionMap::OptionMap(const OptionMap& other) : len(other.len) {
|
||||
U_ASSERT(!other.bogus);
|
||||
Option* result = copyArray(other.options.getAlias(), len);
|
||||
if (result == nullptr && len != 0) {
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
Option* result = copyArray(other.options.getAlias(), len, localErrorCode);
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
return;
|
||||
}
|
||||
|
@ -304,14 +313,64 @@ int32_t OptionMap::size() const {
|
|||
return len;
|
||||
}
|
||||
|
||||
Operator::Builder& Operator::Builder::setOptionMap(OptionMap&& m) {
|
||||
optionMap = std::move(m);
|
||||
delete options;
|
||||
options = nullptr;
|
||||
OptionMap::~OptionMap() {}
|
||||
|
||||
OptionMap OptionMap::Builder::build(UErrorCode& status) {
|
||||
return OptionMap(*options, status);
|
||||
}
|
||||
|
||||
OptionMap::Builder::Builder(UErrorCode& status) {
|
||||
options = createStringUVector(status);
|
||||
}
|
||||
|
||||
OptionMap::Builder::Builder(OptionMap::Builder&& other) {
|
||||
checkDuplicates = other.checkDuplicates;
|
||||
options = other.options;
|
||||
other.options = nullptr;
|
||||
}
|
||||
|
||||
OptionMap::Builder& OptionMap::Builder::operator=(OptionMap::Builder other) noexcept {
|
||||
swap(*this, other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
OptionMap::~OptionMap() {}
|
||||
/* static */ OptionMap::Builder OptionMap::Builder::attributes(UErrorCode& status) {
|
||||
Builder b(status);
|
||||
// The same code is re-used for representing attributes and options.
|
||||
// Duplicate attributes are allowed, while duplicate options are disallowed.
|
||||
b.checkDuplicates = false;
|
||||
return b;
|
||||
}
|
||||
|
||||
static UBool hasOptionNamed(const UVector& v, const UnicodeString& s) {
|
||||
for (int32_t i = 0; i < v.size(); i++) {
|
||||
const Option* opt = static_cast<Option*>(v[i]);
|
||||
U_ASSERT(opt != nullptr);
|
||||
if (opt->getName() == s) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
OptionMap::Builder& OptionMap::Builder::add(Option&& opt, UErrorCode& status) {
|
||||
THIS_ON_ERROR(status);
|
||||
|
||||
// If the option name is already in the map, emit a data model error
|
||||
if (checkDuplicates && hasOptionNamed(*options, opt.getName())) {
|
||||
status = U_MF_DUPLICATE_OPTION_NAME_ERROR;
|
||||
} else {
|
||||
Option* newOption = create<Option>(std::move(opt), status);
|
||||
options->adoptElement(newOption, status);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
OptionMap::Builder::~Builder() {
|
||||
if (options != nullptr) {
|
||||
delete options;
|
||||
}
|
||||
}
|
||||
|
||||
const Reserved& Operator::asReserved() const {
|
||||
U_ASSERT(isReserved());
|
||||
|
@ -332,13 +391,12 @@ Option& Option::operator=(Option other) noexcept {
|
|||
|
||||
Option::~Option() {}
|
||||
|
||||
Operator::Builder::Builder(UErrorCode& status) {
|
||||
options = createStringUVector(status);
|
||||
}
|
||||
Operator::Builder::Builder(UErrorCode& status) : options(OptionMap::Builder(status)) {}
|
||||
|
||||
Operator::Builder& Operator::Builder::setReserved(Reserved&& reserved) {
|
||||
isReservedSequence = true;
|
||||
hasFunctionName = false;
|
||||
hasOptions = false;
|
||||
asReserved = std::move(reserved);
|
||||
return *this;
|
||||
}
|
||||
|
@ -355,31 +413,12 @@ const FunctionName& Operator::getFunctionName() const {
|
|||
return std::get_if<Callable>(&contents)->getName();
|
||||
}
|
||||
|
||||
static UBool hasOptionNamed(const UVector& v, const UnicodeString& s) {
|
||||
for (int32_t i = 0; i < v.size(); i++) {
|
||||
const Option* opt = static_cast<Option*>(v[i]);
|
||||
U_ASSERT(opt != nullptr);
|
||||
if (opt->getName() == s) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Operator::Builder& Operator::Builder::addOption(const UnicodeString &key, Operand&& value, UErrorCode& errorCode) noexcept {
|
||||
THIS_ON_ERROR(errorCode);
|
||||
|
||||
isReservedSequence = false;
|
||||
hasOptions = true;
|
||||
U_ASSERT(options != nullptr);
|
||||
// If the option name is already in the map, emit a data model error
|
||||
if (hasOptionNamed(*options, key)) {
|
||||
errorCode = U_MF_DUPLICATE_OPTION_NAME_ERROR;
|
||||
} else {
|
||||
Option* newOption = create<Option>(Option(key, std::move(value)), errorCode);
|
||||
THIS_ON_ERROR(errorCode);
|
||||
options->adoptElement(newOption, errorCode);
|
||||
}
|
||||
options.add(Option(key, std::move(value)), errorCode);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -404,11 +443,7 @@ Operator Operator::Builder::build(UErrorCode& errorCode) {
|
|||
errorCode = U_INVALID_STATE_ERROR;
|
||||
return result;
|
||||
}
|
||||
if (options != nullptr) {
|
||||
// Initialize options from what was set with setOptions()
|
||||
optionMap = OptionMap(*options, errorCode);
|
||||
}
|
||||
result = Operator(functionName, optionMap);
|
||||
result = Operator(functionName, options.build(errorCode));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -425,11 +460,7 @@ Operator::Operator(const FunctionName& f, const UVector& optsVector, UErrorCode&
|
|||
|
||||
Operator::Operator(const FunctionName& f, const OptionMap& opts) : contents(Callable(f, opts)) {}
|
||||
|
||||
Operator::Builder::~Builder() {
|
||||
if (options != nullptr) {
|
||||
delete options;
|
||||
}
|
||||
}
|
||||
Operator::Builder::~Builder() {}
|
||||
|
||||
Operator::~Operator() {}
|
||||
|
||||
|
@ -444,28 +475,26 @@ Callable::~Callable() {}
|
|||
|
||||
// ------------ Markup
|
||||
|
||||
Markup::Builder::Builder(UErrorCode& status) {
|
||||
options = createUVector(status);
|
||||
attributes = createUVector(status);
|
||||
}
|
||||
Markup::Builder::Builder(UErrorCode& status)
|
||||
: options(OptionMap::Builder(status)), attributes(OptionMap::Builder::attributes(status)) {}
|
||||
|
||||
Markup::Builder& Markup::Builder::setAttributeMap(OptionMap&& m) {
|
||||
attributeMap = std::move(m);
|
||||
delete attributes;
|
||||
attributes = nullptr;
|
||||
Markup::Markup(UMarkupType ty, UnicodeString n, OptionMap&& o, OptionMap&& a)
|
||||
: type(ty), name(n), options(std::move(o)), attributes(std::move(a)) {}
|
||||
|
||||
Markup::Builder& Markup::Builder::addOption(const UnicodeString &key,
|
||||
Operand&& value,
|
||||
UErrorCode& errorCode) {
|
||||
options.add(Option(key, std::move(value)), errorCode);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Markup::Builder& Markup::Builder::setOptionMap(OptionMap&& m) {
|
||||
optionMap = std::move(m);
|
||||
delete options;
|
||||
options = nullptr;
|
||||
Markup::Builder& Markup::Builder::addAttribute(const UnicodeString &key,
|
||||
Operand&& value,
|
||||
UErrorCode& errorCode) {
|
||||
attributes.add(Option(key, std::move(value)), errorCode);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Markup::Markup(UMarkupType ty, UnicodeString n, OptionMap&& o, OptionMap&& a) : type(ty), name(n), options(std::move(o)), attributes(std::move(a)) {
|
||||
}
|
||||
|
||||
Markup Markup::Builder::build(UErrorCode& errorCode) {
|
||||
Markup result;
|
||||
|
||||
|
@ -479,34 +508,22 @@ Markup Markup::Builder::build(UErrorCode& errorCode) {
|
|||
// setName() must be called before calling build()
|
||||
errorCode = U_INVALID_STATE_ERROR;
|
||||
} else {
|
||||
if (options != nullptr) {
|
||||
// Initialize options from what was done with setOptions
|
||||
optionMap = OptionMap(*options, errorCode);
|
||||
}
|
||||
if (attributes != nullptr) {
|
||||
attributeMap = OptionMap(*attributes, errorCode);
|
||||
}
|
||||
result = Markup(type, name, std::move(optionMap), std::move(attributeMap));
|
||||
result = Markup(type,
|
||||
name,
|
||||
options.build(errorCode),
|
||||
attributes.build(errorCode));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Markup::Builder::~Builder() {
|
||||
if (options != nullptr) {
|
||||
delete options;
|
||||
}
|
||||
if (attributes != nullptr) {
|
||||
delete attributes;
|
||||
}
|
||||
}
|
||||
Markup::Builder::~Builder() {}
|
||||
|
||||
Markup::~Markup() {}
|
||||
|
||||
// ------------ Expression
|
||||
|
||||
Expression::Builder::Builder(UErrorCode& status) {
|
||||
attributes = createUVector(status);
|
||||
}
|
||||
Expression::Builder::Builder(UErrorCode& status)
|
||||
: attributes(OptionMap::Builder::attributes(status)) {}
|
||||
|
||||
UBool Expression::isStandaloneAnnotation() const {
|
||||
return rand.isNull();
|
||||
|
@ -549,10 +566,10 @@ Expression::Builder& Expression::Builder::setOperator(Operator&& rAtor) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
Expression::Builder& Expression::Builder::setAttributeMap(OptionMap&& m) {
|
||||
attributeMap = std::move(m);
|
||||
delete attributes;
|
||||
attributes = nullptr;
|
||||
Expression::Builder& Expression::Builder::addAttribute(const UnicodeString& k,
|
||||
Operand&& v,
|
||||
UErrorCode& status) {
|
||||
attributes.add(Option(k, std::move(v)), status);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -568,16 +585,14 @@ Expression Expression::Builder::build(UErrorCode& errorCode) {
|
|||
return result;
|
||||
}
|
||||
|
||||
if (attributes != nullptr) {
|
||||
attributeMap = OptionMap(*attributes, errorCode);
|
||||
}
|
||||
OptionMap attributeMap = attributes.build(errorCode);
|
||||
if (hasOperand && hasOperator) {
|
||||
result = Expression(rator, rand, attributeMap);
|
||||
result = Expression(rator, rand, std::move(attributeMap));
|
||||
} else if (hasOperand && !hasOperator) {
|
||||
result = Expression(rand, attributeMap);
|
||||
result = Expression(rand, std::move(attributeMap));
|
||||
} else {
|
||||
// rator is valid, rand is not valid
|
||||
result = Expression(rator, attributeMap);
|
||||
result = Expression(rator, std::move(attributeMap));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -591,11 +606,7 @@ Expression& Expression::operator=(Expression other) noexcept {
|
|||
return *this;
|
||||
}
|
||||
|
||||
Expression::Builder::~Builder() {
|
||||
if (attributes != nullptr) {
|
||||
delete attributes;
|
||||
}
|
||||
}
|
||||
Expression::Builder::~Builder() {}
|
||||
|
||||
Expression::~Expression() {}
|
||||
|
||||
|
@ -651,16 +662,13 @@ const Reserved* UnsupportedStatement::getBody(UErrorCode& errorCode) const {
|
|||
UnsupportedStatement::UnsupportedStatement(const UnicodeString& k,
|
||||
const std::optional<Reserved>& r,
|
||||
const UVector& es,
|
||||
UErrorCode& status) : keyword(k), body(r) {
|
||||
UErrorCode& status)
|
||||
: keyword(k), body(r), expressionsLen(es.size()) {
|
||||
CHECK_ERROR(status);
|
||||
|
||||
U_ASSERT(es.size() >= 1);
|
||||
Expression* result = copyVectorToArray<Expression>(es, expressionsLen);
|
||||
if (result == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
expressionsLen = 0;
|
||||
return;
|
||||
}
|
||||
U_ASSERT(expressionsLen >= 1);
|
||||
Expression* result = copyVectorToArray<Expression>(es, status);
|
||||
CHECK_ERROR(status);
|
||||
expressions.adoptInstead(result);
|
||||
}
|
||||
|
||||
|
@ -669,7 +677,11 @@ UnsupportedStatement::UnsupportedStatement(const UnsupportedStatement& other) {
|
|||
body = other.body;
|
||||
expressionsLen = other.expressionsLen;
|
||||
U_ASSERT(expressionsLen > 0);
|
||||
expressions.adoptInstead(copyArray(other.expressions.getAlias(), expressionsLen));
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
expressions.adoptInstead(copyArray(other.expressions.getAlias(), expressionsLen, localErrorCode));
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
expressionsLen = 0;
|
||||
}
|
||||
}
|
||||
|
||||
UnsupportedStatement& UnsupportedStatement::operator=(UnsupportedStatement other) noexcept {
|
||||
|
@ -720,21 +732,32 @@ Pattern::Pattern(const UVector& ps, UErrorCode& status) : len(ps.size()) {
|
|||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
PatternPart* result = copyVectorToArray<PatternPart>(ps, len);
|
||||
if (result == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
PatternPart* result = copyVectorToArray<PatternPart>(ps, status);
|
||||
CHECK_ERROR(status);
|
||||
parts.adoptInstead(result);
|
||||
}
|
||||
|
||||
// Copy constructor
|
||||
Pattern::Pattern(const Pattern& other) noexcept : len(other.len) {
|
||||
parts.adoptInstead(copyArray(other.parts.getAlias(), len));
|
||||
Pattern::Pattern(const Pattern& other) : len(other.len) {
|
||||
U_ASSERT(!other.bogus);
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
if (len == 0) {
|
||||
parts.adoptInstead(nullptr);
|
||||
} else {
|
||||
parts.adoptInstead(copyArray(other.parts.getAlias(), len, localErrorCode));
|
||||
}
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t Pattern::numParts() const {
|
||||
U_ASSERT(!bogus);
|
||||
return len;
|
||||
}
|
||||
|
||||
const PatternPart& Pattern::getPart(int32_t i) const {
|
||||
U_ASSERT(i < numParts());
|
||||
U_ASSERT(!bogus && i < numParts());
|
||||
return parts[i];
|
||||
}
|
||||
|
||||
|
@ -873,12 +896,26 @@ Matcher& Matcher::operator=(Matcher other) {
|
|||
}
|
||||
|
||||
Matcher::Matcher(const Matcher& other) {
|
||||
U_ASSERT(!other.bogus);
|
||||
numSelectors = other.numSelectors;
|
||||
numVariants = other.numVariants;
|
||||
selectors.adoptInstead(copyArray<Expression>(other.selectors.getAlias(), numSelectors));
|
||||
variants.adoptInstead(copyArray<Variant>(other.variants.getAlias(), numVariants));
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
selectors.adoptInstead(copyArray<Expression>(other.selectors.getAlias(),
|
||||
numSelectors,
|
||||
localErrorCode));
|
||||
variants.adoptInstead(copyArray<Variant>(other.variants.getAlias(),
|
||||
numVariants,
|
||||
localErrorCode));
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
}
|
||||
}
|
||||
|
||||
Matcher::Matcher(Expression* ss, int32_t ns, Variant* vs, int32_t nv)
|
||||
: selectors(ss), numSelectors(ns), variants(vs), numVariants(nv) {}
|
||||
|
||||
Matcher::~Matcher() {}
|
||||
|
||||
// --------------- MFDataModel
|
||||
|
||||
const Pattern& MFDataModel::getPattern() const {
|
||||
|
@ -1012,29 +1049,34 @@ MFDataModel::Builder& MFDataModel::Builder::setPattern(Pattern&& pat) {
|
|||
MFDataModel::MFDataModel(const MFDataModel& other) : body(Pattern()) {
|
||||
U_ASSERT(!other.bogus);
|
||||
|
||||
UErrorCode localErrorCode = U_ZERO_ERROR;
|
||||
|
||||
if (other.hasPattern()) {
|
||||
body.emplace<Pattern>(Pattern(*std::get_if<Pattern>(&other.body)));
|
||||
// body.emplace<Pattern>(Pattern(*std::get_if<Pattern>(&other.body)));
|
||||
body = *std::get_if<Pattern>(&other.body);
|
||||
} else {
|
||||
const Expression* otherSelectors = other.getSelectorsInternal();
|
||||
const Variant* otherVariants = other.getVariantsInternal();
|
||||
int32_t numSelectors = other.numSelectors();
|
||||
int32_t numVariants = other.numVariants();
|
||||
Expression* copiedSelectors = copyArray(otherSelectors, numSelectors);
|
||||
Variant* copiedVariants = copyArray(otherVariants, numVariants);
|
||||
if (!(copiedSelectors != nullptr && copiedVariants != nullptr)) {
|
||||
Expression* copiedSelectors = copyArray(otherSelectors, numSelectors, localErrorCode);
|
||||
Variant* copiedVariants = copyArray(otherVariants, numVariants, localErrorCode);
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
return;
|
||||
}
|
||||
body.emplace<Matcher>(Matcher(copiedSelectors, numSelectors, copiedVariants, numVariants));
|
||||
// body.emplace<Matcher>(Matcher(copiedSelectors, numSelectors, copiedVariants, numVariants));
|
||||
body = Matcher(copiedSelectors, numSelectors, copiedVariants, numVariants);
|
||||
}
|
||||
|
||||
bindingsLen = other.bindingsLen;
|
||||
bindings.adoptInstead(copyArray(other.bindings.getAlias(), bindingsLen));
|
||||
if (!bindings.isValid()) {
|
||||
bindings.adoptInstead(copyArray(other.bindings.getAlias(), bindingsLen, localErrorCode));
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
}
|
||||
unsupportedStatementsLen = other.unsupportedStatementsLen;
|
||||
unsupportedStatements.adoptInstead(copyArray(other.unsupportedStatements.getAlias(), unsupportedStatementsLen));
|
||||
if (!unsupportedStatements.isValid()) {
|
||||
unsupportedStatements.adoptInstead(copyArray(other.unsupportedStatements.getAlias(), unsupportedStatementsLen, localErrorCode));
|
||||
if (U_FAILURE(localErrorCode)) {
|
||||
bogus = true;
|
||||
}
|
||||
}
|
||||
|
@ -1045,25 +1087,33 @@ MFDataModel::MFDataModel(const MFDataModel::Builder& builder, UErrorCode& errorC
|
|||
if (builder.hasPattern) {
|
||||
body.emplace<Pattern>(builder.pattern);
|
||||
} else {
|
||||
int32_t numVariants = builder.variants == nullptr ? 0 : builder.variants->size();
|
||||
int32_t numSelectors = builder.selectors == nullptr ? 0 : builder.selectors->size();
|
||||
Variant* variants = copyVectorToArray<Variant>(*builder.variants, numVariants);
|
||||
Expression* selectors = copyVectorToArray<Expression>(*builder.selectors, numSelectors);
|
||||
bogus &= (variants != nullptr && selectors != nullptr);
|
||||
U_ASSERT(builder.variants != nullptr);
|
||||
U_ASSERT(builder.selectors != nullptr);
|
||||
int32_t numVariants = builder.variants->size();
|
||||
int32_t numSelectors = builder.selectors->size();
|
||||
Variant* variants = copyVectorToArray<Variant>(*builder.variants, errorCode);
|
||||
Expression* selectors = copyVectorToArray<Expression>(*builder.selectors, errorCode);
|
||||
if (U_FAILURE(errorCode)) {
|
||||
bogus = true;
|
||||
return;
|
||||
}
|
||||
body.emplace<Matcher>(Matcher(selectors, numSelectors, variants, numVariants));
|
||||
}
|
||||
|
||||
U_ASSERT(builder.bindings != nullptr);
|
||||
bindingsLen = builder.bindings->size();
|
||||
bindings.adoptInstead(copyVectorToArray<Binding>(*builder.bindings, bindingsLen));
|
||||
bindings.adoptInstead(copyVectorToArray<Binding>(*builder.bindings, errorCode));
|
||||
unsupportedStatementsLen = builder.unsupportedStatements->size();
|
||||
unsupportedStatements.adoptInstead(copyVectorToArray<UnsupportedStatement>(*builder.unsupportedStatements, unsupportedStatementsLen));
|
||||
bogus &= ((bool) (bindings.isValid() && unsupportedStatements.isValid()));
|
||||
unsupportedStatements.adoptInstead(copyVectorToArray<UnsupportedStatement>(*builder.unsupportedStatements, errorCode));
|
||||
if (U_FAILURE(errorCode)) {
|
||||
bogus = true;
|
||||
}
|
||||
}
|
||||
|
||||
MFDataModel::MFDataModel() : body(Pattern()) {}
|
||||
|
||||
MFDataModel& MFDataModel::operator=(MFDataModel other) noexcept {
|
||||
U_ASSERT(!other.bogus);
|
||||
swap(*this, other);
|
||||
return *this;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#if !UCONFIG_NO_MF2
|
||||
|
||||
#include "messageformat2_allocation.h"
|
||||
#include "messageformat2_cached_formatters.h"
|
||||
#include "messageformat2_evaluation.h"
|
||||
#include "messageformat2_macros.h"
|
||||
#include "uvector.h" // U_ASSERT
|
||||
|
@ -41,10 +40,8 @@ const ResolvedFunctionOption* FunctionOptions::getResolvedFunctionOptions(int32_
|
|||
FunctionOptions::FunctionOptions(UVector&& optionsVector, UErrorCode& status) {
|
||||
CHECK_ERROR(status);
|
||||
|
||||
options = moveVectorToArray<ResolvedFunctionOption>(optionsVector, functionOptionsLen);
|
||||
if (options == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
functionOptionsLen = optionsVector.size();
|
||||
options = moveVectorToArray<ResolvedFunctionOption>(optionsVector, status);
|
||||
}
|
||||
|
||||
UBool FunctionOptions::getFunctionOption(const UnicodeString& key, Formattable& option) const {
|
||||
|
@ -186,8 +183,6 @@ PrioritizedVariant::~PrioritizedVariant() {}
|
|||
|
||||
Closure::~Closure() {}
|
||||
|
||||
CachedFormatters::~CachedFormatters() {}
|
||||
|
||||
// MessageContext methods
|
||||
|
||||
void MessageContext::checkErrors(UErrorCode& status) const {
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#include "unicode/messageformat2.h"
|
||||
#include "messageformat2_allocation.h"
|
||||
#include "messageformat2_cached_formatters.h"
|
||||
#include "messageformat2_checker.h"
|
||||
#include "messageformat2_errors.h"
|
||||
#include "messageformat2_evaluation.h"
|
||||
|
@ -138,13 +137,6 @@ namespace message2 {
|
|||
errors = errorsNew.orphan();
|
||||
}
|
||||
|
||||
// Initialize formatter cache
|
||||
cachedFormatters = new CachedFormatters();
|
||||
if (cachedFormatters == nullptr) {
|
||||
success = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
// Note: we currently evaluate variables lazily,
|
||||
// without memoization. This call is still necessary
|
||||
// to check out-of-scope uses of local variables in
|
||||
|
@ -156,9 +148,6 @@ namespace message2 {
|
|||
}
|
||||
|
||||
void MessageFormatter::cleanup() noexcept {
|
||||
if (cachedFormatters != nullptr) {
|
||||
delete cachedFormatters;
|
||||
}
|
||||
if (errors != nullptr) {
|
||||
delete errors;
|
||||
}
|
||||
|
@ -172,8 +161,6 @@ namespace message2 {
|
|||
customMFFunctionRegistry = other.customMFFunctionRegistry;
|
||||
dataModel = std::move(other.dataModel);
|
||||
normalizedInput = std::move(other.normalizedInput);
|
||||
cachedFormatters = other.cachedFormatters;
|
||||
other.cachedFormatters = nullptr;
|
||||
errors = other.errors;
|
||||
other.errors = nullptr;
|
||||
return *this;
|
||||
|
@ -219,10 +206,26 @@ namespace message2 {
|
|||
return result;
|
||||
}
|
||||
|
||||
// Precondition: formatter is defined
|
||||
const Formatter& MessageFormatter::getFormatter(MessageContext& context, const FunctionName& functionName, UErrorCode& status) const {
|
||||
U_ASSERT(isFormatter(functionName));
|
||||
return *maybeCachedFormatter(context, functionName, status);
|
||||
// Returns an owned pointer
|
||||
Formatter* MessageFormatter::getFormatter(const FunctionName& functionName, UErrorCode& status) const {
|
||||
NULL_ON_ERROR(status);
|
||||
|
||||
// Create the formatter
|
||||
|
||||
// First, look up the formatter factory for this function
|
||||
FormatterFactory* formatterFactory = lookupFormatterFactory(functionName, status);
|
||||
NULL_ON_ERROR(status);
|
||||
|
||||
U_ASSERT(formatterFactory != nullptr);
|
||||
|
||||
// Create a specific instance of the formatter
|
||||
Formatter* formatter = formatterFactory->createFormatter(locale, status);
|
||||
NULL_ON_ERROR(status);
|
||||
if (formatter == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return nullptr;
|
||||
}
|
||||
return formatter;
|
||||
}
|
||||
|
||||
bool MessageFormatter::getDefaultFormatterNameByType(const UnicodeString& type, FunctionName& name) const {
|
||||
|
@ -275,16 +278,15 @@ namespace message2 {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
// Returns non-owned pointer. Returns pointer rather than reference because it can fail.
|
||||
// Returns non-const because FormatterFactory is mutable.
|
||||
FormatterFactory* MessageFormatter::lookupFormatterFactory(MessageContext& context, const FunctionName& functionName, UErrorCode& status) const {
|
||||
DynamicErrors& err = context.getErrors();
|
||||
FormatterFactory* MessageFormatter::lookupFormatterFactory(const FunctionName& functionName,
|
||||
UErrorCode& status) const {
|
||||
NULL_ON_ERROR(status);
|
||||
|
||||
if (isBuiltInFormatter(functionName)) {
|
||||
return standardMFFunctionRegistry.getFormatter(functionName);
|
||||
}
|
||||
if (isBuiltInSelector(functionName)) {
|
||||
err.setFormattingError(functionName, status);
|
||||
status = U_MF_FORMATTING_ERROR;
|
||||
return nullptr;
|
||||
}
|
||||
if (hasCustomMFFunctionRegistry()) {
|
||||
|
@ -294,7 +296,7 @@ namespace message2 {
|
|||
return formatterFactory;
|
||||
}
|
||||
if (customMFFunctionRegistry.getSelector(functionName) != nullptr) {
|
||||
err.setFormattingError(functionName, status);
|
||||
status = U_MF_FORMATTING_ERROR;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -302,7 +304,7 @@ namespace message2 {
|
|||
// isn't built-in, or the function doesn't exist in either the built-in
|
||||
// or custom registry.
|
||||
// Unknown function error
|
||||
err.setUnknownFunction(functionName, status);
|
||||
status = U_MF_UNKNOWN_FUNCTION_ERROR;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -315,39 +317,6 @@ namespace message2 {
|
|||
return hasCustomMFFunctionRegistry() && getCustomMFFunctionRegistry().getSelector(fn) != nullptr;
|
||||
}
|
||||
|
||||
const Formatter* MessageFormatter::maybeCachedFormatter(MessageContext& context, const FunctionName& functionName, UErrorCode& errorCode) const {
|
||||
NULL_ON_ERROR(errorCode);
|
||||
U_ASSERT(cachedFormatters != nullptr);
|
||||
|
||||
const Formatter* result = cachedFormatters->getFormatter(functionName);
|
||||
if (result == nullptr) {
|
||||
// Create the formatter
|
||||
|
||||
// First, look up the formatter factory for this function
|
||||
FormatterFactory* formatterFactory = lookupFormatterFactory(context, functionName, errorCode);
|
||||
NULL_ON_ERROR(errorCode);
|
||||
|
||||
// If the formatter factory was null, there must have been
|
||||
// an earlier error/warning
|
||||
if (formatterFactory == nullptr) {
|
||||
U_ASSERT(context.getErrors().hasUnknownFunctionError() || context.getErrors().hasFormattingError());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Create a specific instance of the formatter
|
||||
Formatter* formatter = formatterFactory->createFormatter(locale, errorCode);
|
||||
NULL_ON_ERROR(errorCode);
|
||||
if (formatter == nullptr) {
|
||||
errorCode = U_MEMORY_ALLOCATION_ERROR;
|
||||
return nullptr;
|
||||
}
|
||||
cachedFormatters->adoptFormatter(functionName, formatter, errorCode);
|
||||
return formatter;
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace message2
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
|
|
@ -908,7 +908,8 @@ Literal Parser::parseLiteral(UErrorCode& errorCode) {
|
|||
|
||||
Adds the option to `options`
|
||||
*/
|
||||
void Parser::parseAttribute(UVector& options, UErrorCode& errorCode) {
|
||||
template<class T>
|
||||
void Parser::parseAttribute(AttributeAdder<T>& attrAdder, UErrorCode& errorCode) {
|
||||
U_ASSERT(inBounds(source, index));
|
||||
|
||||
U_ASSERT(source[index] == AT);
|
||||
|
@ -950,26 +951,7 @@ void Parser::parseAttribute(UVector& options, UErrorCode& errorCode) {
|
|||
index = savedIndex;
|
||||
}
|
||||
|
||||
CHECK_ERROR(errorCode);
|
||||
|
||||
// No duplicate check -- the spec doesn't require one
|
||||
Option* opt = new Option(lhs, std::move(rand));
|
||||
if (opt == nullptr) {
|
||||
errorCode = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
options.adoptElement(static_cast<void*>(opt), errorCode);
|
||||
}
|
||||
|
||||
// `options` is a vector of Option*
|
||||
static bool hasOption(const UVector& options, const UnicodeString& optionName) {
|
||||
for (int32_t i = 0; i < options.size(); i++) {
|
||||
const Option* opt = static_cast<Option*>(options.elementAt(i));
|
||||
if (opt->getName() == optionName) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
attrAdder.addAttribute(lhs, std::move(rand), errorCode);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -977,50 +959,8 @@ static bool hasOption(const UVector& options, const UnicodeString& optionName) {
|
|||
|
||||
Adds the option to `optionList`
|
||||
*/
|
||||
void Parser::parseOption(UVector& options, UErrorCode& errorCode) {
|
||||
U_ASSERT(inBounds(source, index));
|
||||
|
||||
// Parse LHS
|
||||
UnicodeString lhs = parseIdentifier(errorCode);
|
||||
|
||||
// Parse '='
|
||||
parseTokenWithWhitespace(EQUALS, errorCode);
|
||||
|
||||
UnicodeString rhsStr;
|
||||
Operand rand;
|
||||
// Parse RHS, which is either a literal or variable
|
||||
switch (source[index]) {
|
||||
case DOLLAR: {
|
||||
rand = Operand(parseVariableName(errorCode));
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// Must be a literal
|
||||
rand = Operand(parseLiteral(errorCode));
|
||||
break;
|
||||
}
|
||||
}
|
||||
U_ASSERT(!rand.isNull());
|
||||
|
||||
// Finally, add the key=value mapping
|
||||
if (hasOption(options, lhs)) {
|
||||
errors.setDuplicateOptionName(errorCode);
|
||||
} else {
|
||||
Option* opt = new Option(lhs, std::move(rand));
|
||||
if (opt == nullptr) {
|
||||
errorCode = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
options.adoptElement(static_cast<void*>(opt), errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Consume a name-value pair, matching the `option` nonterminal in the grammar.
|
||||
|
||||
Adds the option to `optionList`
|
||||
*/
|
||||
void Parser::parseOption(Operator::Builder &builder, UErrorCode& errorCode) {
|
||||
template<class T>
|
||||
void Parser::parseOption(OptionAdder<T>& addOption, UErrorCode& errorCode) {
|
||||
U_ASSERT(inBounds(source, index));
|
||||
|
||||
// Parse LHS
|
||||
|
@ -1049,7 +989,7 @@ void Parser::parseOption(Operator::Builder &builder, UErrorCode& errorCode) {
|
|||
// Use a local error code, check for duplicate option error and
|
||||
// record it as with other errors
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
builder.addOption(lhs, std::move(rand), status);
|
||||
addOption.addOption(lhs, std::move(rand), status);
|
||||
if (U_FAILURE(status)) {
|
||||
U_ASSERT(status == U_MF_DUPLICATE_OPTION_NAME_ERROR);
|
||||
errors.setDuplicateOptionName(errorCode);
|
||||
|
@ -1066,7 +1006,8 @@ void Parser::parseOption(Operator::Builder &builder, UErrorCode& errorCode) {
|
|||
Consume optional whitespace followed by a sequence of options
|
||||
(possibly empty), separated by whitespace
|
||||
*/
|
||||
void Parser::parseOptions(Operator::Builder& builder, UErrorCode& errorCode) {
|
||||
template <class T>
|
||||
void Parser::parseOptions(OptionAdder<T>& addOption, UErrorCode& errorCode) {
|
||||
// Early exit if out of bounds -- no more work is possible
|
||||
CHECK_BOUNDS(source, index, parseError, errorCode);
|
||||
|
||||
|
@ -1144,121 +1085,21 @@ an option or an attribute.
|
|||
index = firstWhitespace;
|
||||
break;
|
||||
}
|
||||
parseOption(builder, errorCode);
|
||||
parseOption(addOption, errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Consume optional whitespace followed by a sequence of options
|
||||
(possibly empty), separated by whitespace
|
||||
*/
|
||||
OptionMap Parser::parseOptions(UErrorCode& errorCode) {
|
||||
OptionMap options;
|
||||
|
||||
// Early exit if out of bounds -- no more work is possible
|
||||
if (!inBounds(source, index)) {
|
||||
ERROR(parseError, errorCode, index);
|
||||
return options;
|
||||
}
|
||||
|
||||
// Initialize options vector, which supports equality on elements
|
||||
LocalPointer<UVector> optionVec(createStringUVector(errorCode));
|
||||
if (U_FAILURE(errorCode)) {
|
||||
return options;
|
||||
}
|
||||
/*
|
||||
Arbitrary lookahead is required to parse option lists. To see why, consider
|
||||
these rules from the grammar:
|
||||
|
||||
expression = "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
|
||||
annotation = (function *(s option)) / reserved
|
||||
|
||||
And this example:
|
||||
{:foo }
|
||||
|
||||
Derivation:
|
||||
expression -> "{" [s] (((literal / variable) [s annotation]) / annotation) [s] "}"
|
||||
-> "{" [s] annotation [s] "}"
|
||||
-> "{" [s] ((function *(s option)) / reserved) [s] "}"
|
||||
-> "{" [s] function *(s option) [s] "}"
|
||||
|
||||
In this example, knowing whether to expect a '}' or the start of another option
|
||||
after the whitespace would require arbitrary lookahead -- in other words, which
|
||||
rule should we apply?
|
||||
*(s option) -> s option *(s option)
|
||||
or
|
||||
*(s option) ->
|
||||
|
||||
The same would apply to the example {:foo k=v } (note the trailing space after "v").
|
||||
|
||||
This is addressed using a form of backtracking and (to make the backtracking easier
|
||||
to apply) a slight refactoring to the grammar.
|
||||
|
||||
This code is written as if the grammar is:
|
||||
expression = "{" [s] (((literal / variable) ([s] / [s annotation])) / annotation) "}"
|
||||
annotation = (function *(s option) [s]) / (reserved [s])
|
||||
|
||||
Parsing the `*(s option) [s]` sequence can be done within `parseOptions()`, meaning
|
||||
that `parseExpression()` can safely require a '}' after `parseOptions()` finishes.
|
||||
|
||||
Note that when "backtracking" really just means early exit, since only whitespace
|
||||
is involved and there's no state to save.
|
||||
*/
|
||||
|
||||
while(true) {
|
||||
// If the next character is not whitespace, that means we've already
|
||||
// parsed the entire options list (which may have been empty) and there's
|
||||
// no trailing whitespace. In that case, exit.
|
||||
if (!isWhitespace(source[index])) {
|
||||
break;
|
||||
}
|
||||
|
||||
// In any case other than an empty options list, there must be at least
|
||||
// one whitespace character.
|
||||
parseRequiredWhitespace(errorCode);
|
||||
// Restore precondition
|
||||
if (!inBounds(source, index)) {
|
||||
ERROR(parseError, errorCode, index);
|
||||
break;
|
||||
}
|
||||
|
||||
// If a name character follows, then at least one more option remains
|
||||
// in the list.
|
||||
// Otherwise, we've consumed all the options and any trailing whitespace,
|
||||
// and can exit.
|
||||
// Note that exiting is sort of like backtracking: "(s option)" doesn't apply,
|
||||
// so we back out to [s].
|
||||
if (!isNameStart(source[index])) {
|
||||
// We've consumed all the options (meaning that either we consumed non-empty
|
||||
// whitespace, or consumed at least one option.)
|
||||
// Done.
|
||||
// Remove the whitespace from normalizedInput
|
||||
normalizedInput.truncate(normalizedInput.length() - 1);
|
||||
break;
|
||||
}
|
||||
parseOption(*optionVec, errorCode);
|
||||
}
|
||||
|
||||
return OptionMap(*optionVec, errorCode);
|
||||
}
|
||||
|
||||
/*
|
||||
Consume optional whitespace followed by a sequence of attributes
|
||||
(possibly empty), separated by whitespace
|
||||
*/
|
||||
OptionMap Parser::parseAttributes(UErrorCode& errorCode) {
|
||||
OptionMap attributes;
|
||||
template<class T>
|
||||
void Parser::parseAttributes(AttributeAdder<T>& attrAdder, UErrorCode& errorCode) {
|
||||
|
||||
// Early exit if out of bounds -- no more work is possible
|
||||
if (!inBounds(source, index)) {
|
||||
ERROR(parseError, errorCode, index);
|
||||
return attributes;
|
||||
}
|
||||
|
||||
// Initialize options vector, which supports equality on elements
|
||||
LocalPointer<UVector> options(createStringUVector(errorCode));
|
||||
if (U_FAILURE(errorCode)) {
|
||||
return attributes;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1297,10 +1138,8 @@ Arbitrary lookahead is required to parse attribute lists, similarly to option li
|
|||
normalizedInput.truncate(normalizedInput.length() - 1);
|
||||
break;
|
||||
}
|
||||
parseAttribute(*options, errorCode);
|
||||
parseAttribute(attrAdder, errorCode);
|
||||
}
|
||||
|
||||
return OptionMap(*options, errorCode);
|
||||
}
|
||||
|
||||
void Parser::parseReservedEscape(UnicodeString &str, UErrorCode& errorCode) {
|
||||
|
@ -1490,7 +1329,6 @@ Reserved Parser::parseReservedBody(Reserved::Builder& builder, UErrorCode& statu
|
|||
return builder.build(status);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Consume a function call or reserved string, matching the `annotation`
|
||||
nonterminal in the grammar
|
||||
|
@ -1507,8 +1345,10 @@ Operator Parser::parseAnnotation(UErrorCode& status) {
|
|||
// Consume the function name
|
||||
FunctionName func = parseFunction(status);
|
||||
ratorBuilder.setFunctionName(std::move(func));
|
||||
|
||||
OptionAdder<Operator::Builder> addOptions(ratorBuilder);
|
||||
// Consume the options (which may be empty)
|
||||
parseOptions(ratorBuilder, status);
|
||||
parseOptions(addOptions, status);
|
||||
} else {
|
||||
// Must be reserved
|
||||
// A reserved sequence is not a parse error, but might be a formatting error
|
||||
|
@ -1683,8 +1523,8 @@ Expression Parser::parseExpression(UErrorCode& status) {
|
|||
}
|
||||
|
||||
// Parse attributes
|
||||
OptionMap attributes = parseAttributes(status);
|
||||
exprBuilder.setAttributeMap(std::move(attributes));
|
||||
AttributeAdder attrAdder(exprBuilder);
|
||||
parseAttributes(attrAdder, status);
|
||||
|
||||
// Parse optional space
|
||||
// (the last [s] in e.g. "{" [s] literal [s annotation] *(s attribute) [s] "}")
|
||||
|
@ -2138,13 +1978,15 @@ Markup Parser::parseMarkup(UErrorCode& status) {
|
|||
// Parse the options, which must begin with a ' '
|
||||
// if present
|
||||
if (inBounds(source, index) && isWhitespace(source[index])) {
|
||||
builder.setOptionMap(parseOptions(status));
|
||||
OptionAdder<Markup::Builder> optionAdder(builder);
|
||||
parseOptions(optionAdder, status);
|
||||
}
|
||||
|
||||
// Parse the attributes, which also must begin
|
||||
// with a ' '
|
||||
if (inBounds(source, index) && isWhitespace(source[index])) {
|
||||
builder.setAttributeMap(parseAttributes(status));
|
||||
AttributeAdder attrAdder(builder);
|
||||
parseAttributes(attrAdder, status);
|
||||
}
|
||||
|
||||
parseOptionalWhitespace(status);
|
||||
|
|
|
@ -26,6 +26,34 @@ namespace message2 {
|
|||
|
||||
using namespace data_model;
|
||||
|
||||
// Used for parameterizing options parsing code
|
||||
// over the two builders that use it (Operator and Markup)
|
||||
template <class T>
|
||||
class OptionAdder {
|
||||
private:
|
||||
T& builder;
|
||||
public:
|
||||
OptionAdder(T& b) : builder(b) {}
|
||||
void addOption(const UnicodeString& k, Operand&& r, UErrorCode& s) {
|
||||
builder.addOption(k, std::move(r), s);
|
||||
}
|
||||
};
|
||||
|
||||
// Used for parameterizing attributes parsing code
|
||||
// over the two builders that use it (Expression and Markup)
|
||||
// Unfortunately the same OptionAdder class can't just be reused,
|
||||
// becaues duplicate options are forbidden while duplicate attributes are not
|
||||
template <class T>
|
||||
class AttributeAdder {
|
||||
private:
|
||||
T& builder;
|
||||
public:
|
||||
AttributeAdder(T& b) : builder(b) {}
|
||||
void addAttribute(const UnicodeString& k, Operand&& r, UErrorCode& s) {
|
||||
builder.addAttribute(k, std::move(r), s);
|
||||
}
|
||||
};
|
||||
|
||||
// Parser class (private)
|
||||
class Parser : public UMemory {
|
||||
public:
|
||||
|
@ -98,12 +126,14 @@ namespace message2 {
|
|||
Literal parseUnquotedLiteral(UErrorCode&);
|
||||
Literal parseQuotedLiteral(UErrorCode&);
|
||||
Literal parseLiteral(UErrorCode&);
|
||||
void parseAttribute(UVector&, UErrorCode&);
|
||||
OptionMap parseAttributes(UErrorCode&);
|
||||
void parseOption(Operator::Builder&, UErrorCode&);
|
||||
void parseOption(UVector&, UErrorCode&);
|
||||
void parseOptions(Operator::Builder&, UErrorCode&);
|
||||
OptionMap parseOptions(UErrorCode&);
|
||||
template<class T>
|
||||
void parseAttribute(AttributeAdder<T>&, UErrorCode&);
|
||||
template<class T>
|
||||
void parseAttributes(AttributeAdder<T>&, UErrorCode&);
|
||||
template<class T>
|
||||
void parseOption(OptionAdder<T>&, UErrorCode&);
|
||||
template<class T>
|
||||
void parseOptions(OptionAdder<T>&, UErrorCode&);
|
||||
void parseReservedEscape(UnicodeString&, UErrorCode&);
|
||||
void parseReservedChunk(Reserved::Builder&, UErrorCode&);
|
||||
Reserved parseReserved(UErrorCode&);
|
||||
|
|
|
@ -28,7 +28,6 @@ U_NAMESPACE_BEGIN
|
|||
|
||||
namespace message2 {
|
||||
|
||||
class CachedFormatters;
|
||||
class Environment;
|
||||
class MessageContext;
|
||||
class ResolvedSelector;
|
||||
|
@ -46,7 +45,7 @@ namespace message2 {
|
|||
* `FormatterFactory` objects implementing custom formatters, which are allowed to contain
|
||||
* mutable state.)
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API MessageFormatter : public UObject {
|
||||
|
@ -57,14 +56,14 @@ namespace message2 {
|
|||
* Move assignment operator:
|
||||
* The source MessageFormatter will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MessageFormatter& operator=(MessageFormatter&&) noexcept;
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~MessageFormatter();
|
||||
|
@ -80,7 +79,7 @@ namespace message2 {
|
|||
* is still provided in the presence of most error types.
|
||||
* @return The string result of formatting the message with the given arguments.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UnicodeString formatToString(const MessageArguments& arguments, UErrorCode &status);
|
||||
|
@ -97,7 +96,7 @@ namespace message2 {
|
|||
* is still provided in the presence of most error types.
|
||||
* @return The `FormattedMessage` representing the formatted message.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedMessage format(const MessageArguments& arguments, UErrorCode &status) const {
|
||||
|
@ -113,7 +112,7 @@ namespace message2 {
|
|||
*
|
||||
* @return A reference to the locale.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const Locale& getLocale() const { return locale; }
|
||||
|
@ -124,7 +123,7 @@ namespace message2 {
|
|||
* @return result A string representation of the data model.
|
||||
* The string is a valid MessageFormat 2.0 message.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UnicodeString getPattern() const;
|
||||
|
@ -135,7 +134,7 @@ namespace message2 {
|
|||
*
|
||||
* @return A reference to the data model.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const MFDataModel& getDataModel() const;
|
||||
|
@ -175,7 +174,7 @@ namespace message2 {
|
|||
* @param locale The desired locale.
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& setLocale(const Locale& locale);
|
||||
|
@ -191,7 +190,7 @@ namespace message2 {
|
|||
* pattern cannot be parsed, set to failure code.
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& setPattern(const UnicodeString& pattern, UParseError& parseError, UErrorCode& status);
|
||||
|
@ -205,7 +204,7 @@ namespace message2 {
|
|||
* builder.
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& setFunctionRegistry(const MFFunctionRegistry& functionRegistry);
|
||||
|
@ -215,7 +214,7 @@ namespace message2 {
|
|||
* @param dataModel Data model to format. Passed by move.
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& setDataModel(MFDataModel&& dataModel);
|
||||
|
@ -230,7 +229,7 @@ namespace message2 {
|
|||
* nor the data model is set, set to failure code.
|
||||
* @return The new MessageFormatter object
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MessageFormatter build(UErrorCode& status) const;
|
||||
|
@ -242,14 +241,14 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder(UErrorCode& status);
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~Builder();
|
||||
|
@ -261,7 +260,7 @@ namespace message2 {
|
|||
*
|
||||
* @return A normalized string representation of the input
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const UnicodeString& getNormalizedPattern() const { return normalizedInput; }
|
||||
|
@ -328,17 +327,17 @@ namespace message2 {
|
|||
const MFFunctionRegistry& getCustomMFFunctionRegistry() const;
|
||||
|
||||
bool isCustomFormatter(const FunctionName&) const;
|
||||
FormatterFactory* lookupFormatterFactory(MessageContext&, const FunctionName&, UErrorCode& status) const;
|
||||
FormatterFactory* lookupFormatterFactory(const FunctionName&, UErrorCode& status) const;
|
||||
bool isBuiltInSelector(const FunctionName&) const;
|
||||
bool isBuiltInFormatter(const FunctionName&) const;
|
||||
bool isCustomSelector(const FunctionName&) const;
|
||||
const SelectorFactory* lookupSelectorFactory(MessageContext&, const FunctionName&, UErrorCode&) const;
|
||||
bool isSelector(const FunctionName& fn) const { return isBuiltInSelector(fn) || isCustomSelector(fn); }
|
||||
bool isFormatter(const FunctionName& fn) const { return isBuiltInFormatter(fn) || isCustomFormatter(fn); }
|
||||
const Formatter* maybeCachedFormatter(MessageContext&, const FunctionName&, UErrorCode&) const;
|
||||
const Formatter* lookupFormatter(const FunctionName&, UErrorCode&) const;
|
||||
|
||||
Selector* getSelector(MessageContext&, const FunctionName&, UErrorCode&) const;
|
||||
const Formatter& getFormatter(MessageContext&, const FunctionName&, UErrorCode&) const;
|
||||
Formatter* getFormatter(const FunctionName&, UErrorCode&) const;
|
||||
bool getDefaultFormatterNameByType(const UnicodeString&, FunctionName&) const;
|
||||
|
||||
// Checking for resolution errors
|
||||
|
@ -374,16 +373,6 @@ namespace message2 {
|
|||
// Normalized version of the input string (optional whitespace removed)
|
||||
UnicodeString normalizedInput;
|
||||
|
||||
// Formatter cache
|
||||
// Must be a raw pointer to avoid including the internal header file
|
||||
// defining CachedFormatters
|
||||
// Owned by `this`
|
||||
// TODO: This is an optimization that the "TemperatureFormatter" test
|
||||
// (ported from ICU4J) was checking for; however, that test was removed
|
||||
// in order to make `setFormatter()` safe, so maybe this should be
|
||||
// removed too
|
||||
CachedFormatters* cachedFormatters;
|
||||
|
||||
// Errors -- only used while parsing and checking for data model errors; then
|
||||
// the MessageContext keeps track of errors
|
||||
// Must be a raw pointer to avoid including the internal header file
|
||||
|
|
|
@ -34,19 +34,10 @@ U_NAMESPACE_BEGIN
|
|||
// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
|
||||
// for similar examples.)
|
||||
#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
|
||||
#if defined(_MSC_VER)
|
||||
// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4661)
|
||||
#endif
|
||||
template class U_I18N_API LocalPointerBase<UnicodeString>;
|
||||
template class U_I18N_API LocalPointerBase<message2::Formattable>;
|
||||
template class U_I18N_API LocalArray<UnicodeString>;
|
||||
template class U_I18N_API LocalArray<message2::Formattable>;
|
||||
#if defined(_MSC_VER)
|
||||
// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
#endif
|
||||
/// @endcond
|
||||
|
||||
|
@ -62,7 +53,7 @@ namespace message2 {
|
|||
* The `MessageArguments` class represents the named arguments to a message.
|
||||
* It is immutable and movable. It is not copyable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API MessageArguments : public UObject {
|
||||
|
@ -75,7 +66,7 @@ namespace message2 {
|
|||
* objects (argument values). The keys and values of the map are copied into the result.
|
||||
* @param status Input/output error code.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MessageArguments(const std::map<UnicodeString, Formattable>& args, UErrorCode& status) {
|
||||
|
@ -99,7 +90,7 @@ namespace message2 {
|
|||
* Move operator:
|
||||
* The source MessageArguments will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MessageArguments& operator=(MessageArguments&&) noexcept;
|
||||
|
@ -107,14 +98,14 @@ namespace message2 {
|
|||
* Default constructor.
|
||||
* Returns an empty arguments mapping.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MessageArguments() = default;
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~MessageArguments();
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -40,7 +40,7 @@ namespace message2 {
|
|||
* an arbitrary class that can be passed to a custom formatter or selector function.
|
||||
* To be passed in such a way, it must be wrapped in a `Formattable` object.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API FormattableObject : public UObject {
|
||||
|
@ -51,14 +51,14 @@ namespace message2 {
|
|||
* of any custom functions that rely on particular values of this tag
|
||||
* corresponding to particular classes that the object contents can be
|
||||
* downcast to, to ensure that the type tags are used soundly.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual const UnicodeString& tag() const = 0;
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~FormattableObject();
|
||||
|
@ -76,12 +76,7 @@ U_NAMESPACE_END
|
|||
// (See measunit_impl.h, datefmt.h, collationiterator.h, erarules.h and others
|
||||
// for similar examples.)
|
||||
#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
|
||||
#if defined(_MSC_VER)
|
||||
// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4661)
|
||||
#endif
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(U_REAL_MSVC) && defined(_MSVC_STL_VERSION)
|
||||
template class U_I18N_API std::_Variant_storage_<false,
|
||||
double,
|
||||
int64_t,
|
||||
|
@ -97,9 +92,6 @@ template class U_I18N_API std::variant<double,
|
|||
icu::Formattable,
|
||||
const icu::message2::FormattableObject*,
|
||||
P>;
|
||||
#if defined(_MSC_VER)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
#endif
|
||||
/// @endcond
|
||||
|
||||
|
@ -118,7 +110,7 @@ namespace message2 {
|
|||
* object. Likewise, while a pointer to a wrapped array or object is `const`,
|
||||
* the referents of the pointers may be mutated by other code.)
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API Formattable : public UObject {
|
||||
|
@ -127,7 +119,7 @@ namespace message2 {
|
|||
/**
|
||||
* Gets the data type of this Formattable object.
|
||||
* @return the data type of this Formattable object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UFormattableType getType() const;
|
||||
|
@ -138,7 +130,7 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
* @return the double value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
double getDouble(UErrorCode& status) const {
|
||||
|
@ -160,7 +152,7 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
* @return the long value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
int32_t getLong(UErrorCode& status) const {
|
||||
|
@ -183,7 +175,7 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
* @return the int64 value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
int64_t getInt64Value(UErrorCode& status) const {
|
||||
|
@ -210,7 +202,7 @@ namespace message2 {
|
|||
* the status is set to U_INVALID_FORMAT_ERROR.
|
||||
* @param status the error code
|
||||
* @return the int64 value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
int64_t getInt64(UErrorCode& status) const;
|
||||
|
@ -220,7 +212,7 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
* @return A reference to the string value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const UnicodeString& getString(UErrorCode& status) const {
|
||||
|
@ -239,7 +231,7 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
* @return the Date value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UDate getDate(UErrorCode& status) const {
|
||||
|
@ -256,7 +248,7 @@ namespace message2 {
|
|||
* Returns true if the data type of this Formattable object
|
||||
* is kDouble
|
||||
* @return true if this is a pure numeric object
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UBool isNumeric() const { return (getType() == UFMT_DOUBLE || getType() == UFMT_LONG || getType() == UFMT_INT64); }
|
||||
|
@ -268,7 +260,7 @@ namespace message2 {
|
|||
* @param count fill-in with the count of this object.
|
||||
* @param status Input/output error code.
|
||||
* @return the array value of this object.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const Formattable* getArray(int32_t& count, UErrorCode& status) const;
|
||||
|
@ -280,7 +272,7 @@ namespace message2 {
|
|||
*
|
||||
* @param status Input/output error code.
|
||||
* @return a FormattableObject pointer, or nullptr
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const FormattableObject* getObject(UErrorCode& status) const {
|
||||
|
@ -300,7 +292,7 @@ namespace message2 {
|
|||
* @param f1 will get f2's contents
|
||||
* @param f2 will get f1's contents
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
friend inline void swap(Formattable& f1, Formattable& f2) noexcept {
|
||||
|
@ -312,14 +304,14 @@ namespace message2 {
|
|||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable(const Formattable&);
|
||||
/**
|
||||
* Assignment operator
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable& operator=(Formattable) noexcept;
|
||||
|
@ -327,7 +319,7 @@ namespace message2 {
|
|||
* Default constructor. Leaves the Formattable in a
|
||||
* valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable() : contents(0.0) {}
|
||||
|
@ -336,7 +328,7 @@ namespace message2 {
|
|||
*
|
||||
* @param s A string to wrap as a Formattable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable(const UnicodeString& s) : contents(s) {}
|
||||
|
@ -345,7 +337,7 @@ namespace message2 {
|
|||
*
|
||||
* @param d A double value to wrap as a Formattable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable(double d) : contents(d) {}
|
||||
|
@ -354,7 +346,7 @@ namespace message2 {
|
|||
*
|
||||
* @param i An int64 value to wrap as a Formattable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable(int64_t i) : contents(i) {}
|
||||
|
@ -362,7 +354,7 @@ namespace message2 {
|
|||
* Date factory method.
|
||||
*
|
||||
* @param d A UDate value to wrap as a Formattable.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
static Formattable forDate(UDate d) {
|
||||
|
@ -382,7 +374,7 @@ namespace message2 {
|
|||
* @param status the error code. Possible errors include U_INVALID_FORMAT_ERROR
|
||||
* if the format of the string does not conform to that of a
|
||||
* decimal number.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
static Formattable forDecimal(std::string_view number, UErrorCode& status);
|
||||
|
@ -392,7 +384,7 @@ namespace message2 {
|
|||
* @param arr An array of Formattables, which is adopted.
|
||||
* @param len The length of the array.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable(const Formattable* arr, int32_t len) : contents(std::pair(arr, len)) {}
|
||||
|
@ -401,14 +393,14 @@ namespace message2 {
|
|||
*
|
||||
* @param obj A FormattableObject (not adopted).
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Formattable(const FormattableObject* obj) : contents(obj) {}
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~Formattable();
|
||||
|
@ -420,7 +412,7 @@ namespace message2 {
|
|||
* @param status Input/output error code.
|
||||
* @return An icu::Formattable value with the same value as this.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
icu::Formattable asICUFormattable(UErrorCode& status) const;
|
||||
|
@ -453,7 +445,7 @@ namespace message2 {
|
|||
*
|
||||
* `ResolvedFunctionOption` is immutable and is not copyable or movable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
#ifndef U_IN_DOXYGEN
|
||||
|
@ -482,7 +474,7 @@ class U_I18N_API ResolvedFunctionOption : public UObject {
|
|||
* Mapping from option names to `message2::Formattable` objects, obtained
|
||||
* by calling `getOptions()` on a `FunctionOptions` object.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
using FunctionOptionsMap = std::map<UnicodeString, message2::Formattable>;
|
||||
|
@ -490,7 +482,7 @@ using FunctionOptionsMap = std::map<UnicodeString, message2::Formattable>;
|
|||
/**
|
||||
* Structure encapsulating named options passed to a custom selector or formatter.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API FunctionOptions : public UObject {
|
||||
|
@ -505,7 +497,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @return A map from strings to `message2::Formattable` objects representing
|
||||
* the results of resolving each option value.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FunctionOptionsMap getOptions() const {
|
||||
|
@ -522,14 +514,14 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Default constructor.
|
||||
* Returns an empty mapping.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FunctionOptions() { options = nullptr; }
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~FunctionOptions();
|
||||
|
@ -537,7 +529,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Move assignment operator:
|
||||
* The source FunctionOptions will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FunctionOptions& operator=(FunctionOptions&&) noexcept;
|
||||
|
@ -545,14 +537,14 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Move constructor:
|
||||
* The source FunctionOptions will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FunctionOptions(FunctionOptions&&);
|
||||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FunctionOptions& operator=(const FunctionOptions&) = delete;
|
||||
|
@ -588,27 +580,27 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
*
|
||||
* `FormattedValue` is immutable and movable. It is not copyable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API FormattedValue : public UObject {
|
||||
public:
|
||||
/**
|
||||
* Formatted string constructor.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
explicit FormattedValue(const UnicodeString&);
|
||||
/**
|
||||
* Formatted number constructor.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
explicit FormattedValue(number::FormattedNumber&&);
|
||||
/**
|
||||
* Default constructor. Leaves the FormattedValue in
|
||||
* a valid but undefined state.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedValue() : type(kString) {}
|
||||
|
@ -617,7 +609,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
*
|
||||
* @return True if and only if this value is a formatted string.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
bool isString() const { return type == kString; }
|
||||
|
@ -626,7 +618,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
*
|
||||
* @return True if and only if this value is a formatted number.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
bool isNumber() const { return type == kNumber; }
|
||||
|
@ -634,7 +626,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Gets the string contents of this value. If !isString(), then
|
||||
* the result is undefined.
|
||||
* @return A reference to a formatted string.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const UnicodeString& getString() const { return stringOutput; }
|
||||
|
@ -642,7 +634,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Gets the number contents of this value. If !isNumber(), then
|
||||
* the result is undefined.
|
||||
* @return A reference to a formatted number.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const number::FormattedNumber& getNumber() const { return numberOutput; }
|
||||
|
@ -650,7 +642,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Move assignment operator:
|
||||
* The source FormattedValue will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedValue& operator=(FormattedValue&&) noexcept;
|
||||
|
@ -658,14 +650,14 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Move constructor:
|
||||
* The source FormattedValue will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedValue(FormattedValue&& other) { *this = std::move(other); }
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~FormattedValue();
|
||||
|
@ -688,7 +680,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* `FormattablePlaceholder` is immutable (not deeply immutable) and movable.
|
||||
* It is not copyable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API FormattedPlaceholder : public UObject {
|
||||
|
@ -700,7 +692,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @param s An error string. (See the MessageFormat specification for details
|
||||
* on fallback strings.)
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
explicit FormattedPlaceholder(const UnicodeString& s) : fallback(s), type(kFallback) {}
|
||||
|
@ -712,7 +704,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @param output A `FormattedValue` representing the formatted output of `input`.
|
||||
* Passed by move.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedPlaceholder(const FormattedPlaceholder& input, FormattedValue&& output)
|
||||
|
@ -727,7 +719,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @param output A `FormattedValue` representing the formatted output of `input`.
|
||||
* Passed by move.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedPlaceholder(const FormattedPlaceholder& input, FunctionOptions&& opts, FormattedValue&& output)
|
||||
|
@ -739,7 +731,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @param input A `Formattable` object.
|
||||
* @param fb Fallback string to use if an error occurs while formatting the input.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedPlaceholder(const Formattable& input, const UnicodeString& fb)
|
||||
|
@ -748,7 +740,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Default constructor. Leaves the FormattedPlaceholder in a
|
||||
* valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedPlaceholder() : type(kNull) {}
|
||||
|
@ -758,7 +750,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
*
|
||||
* @return A message2::Formattable value.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const message2::Formattable& asFormattable() const;
|
||||
|
@ -768,7 +760,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @return True if and only if this placeholder was constructed from a fallback string,
|
||||
* with no `Formattable` source or formatting output.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
bool isFallback() const { return type == kFallback; }
|
||||
|
@ -778,7 +770,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @return True if and only if this placeholder represents the absent argument to a formatter
|
||||
* that was invoked without an argument.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
bool isNullOperand() const { return type == kNull; }
|
||||
|
@ -788,7 +780,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @return True if and only if this was constructed from both an input `Formattable` and
|
||||
* output `FormattedValue`.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
bool isEvaluated() const { return (type == kEvaluated); }
|
||||
|
@ -797,7 +789,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
*
|
||||
* @return True if and only if this is neither the null argument nor a fallback placeholder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
bool canFormat() const { return !(isFallback() || isNullOperand()); }
|
||||
|
@ -805,7 +797,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Gets the fallback value of this placeholder, to be used in its place if an error occurs while
|
||||
* formatting it.
|
||||
* @return A reference to this placeholder's fallback string.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const UnicodeString& getFallback() const { return fallback; }
|
||||
|
@ -814,7 +806,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @return A reference to an option map, capturing the options that were used
|
||||
* in producing the output of this `FormattedPlaceholder`
|
||||
* (or empty if there is no output)
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const FunctionOptions& options() const { return previousOptions; }
|
||||
|
@ -822,7 +814,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
/**
|
||||
* Returns the formatted output of this placeholder. The result is undefined if !isEvaluated().
|
||||
* @return A fully formatted `FormattedPlaceholder`.
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const FormattedValue& output() const { return formatted; }
|
||||
|
@ -830,7 +822,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Move assignment operator:
|
||||
* The source FormattedPlaceholder will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedPlaceholder& operator=(FormattedPlaceholder&&) noexcept;
|
||||
|
@ -838,7 +830,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* Move constructor:
|
||||
* The source FormattedPlaceholder will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormattedPlaceholder(FormattedPlaceholder&& other) { *this = std::move(other); }
|
||||
|
@ -854,7 +846,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* @param status Input/output error code
|
||||
* @return The result of formatting this placeholder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UnicodeString formatToString(const Locale& locale,
|
||||
|
@ -883,7 +875,7 @@ class U_I18N_API FunctionOptions : public UObject {
|
|||
* The class will contain information allowing the result to be viewed as a string,
|
||||
* iterator, etc. (TBD)
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API FormattedMessage : public icu::FormattedValue {
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace message2 {
|
|||
/**
|
||||
* Interface that factory classes for creating formatters must implement.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API FormatterFactory : public UObject {
|
||||
|
@ -49,21 +49,21 @@ namespace message2 {
|
|||
* @param status Input/output error code.
|
||||
* @return The new Formatter, which is non-null if U_SUCCESS(status).
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual Formatter* createFormatter(const Locale& locale, UErrorCode& status) = 0;
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~FormatterFactory();
|
||||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormatterFactory& operator=(const FormatterFactory&) = delete;
|
||||
|
@ -72,7 +72,7 @@ namespace message2 {
|
|||
/**
|
||||
* Interface that factory classes for creating selectors must implement.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API SelectorFactory : public UObject {
|
||||
|
@ -84,21 +84,21 @@ namespace message2 {
|
|||
* @param status Input/output error code.
|
||||
* @return The new selector, which is non-null if U_SUCCESS(status).
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual Selector* createSelector(const Locale& locale, UErrorCode& status) const = 0;
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~SelectorFactory();
|
||||
/**
|
||||
* Copy constructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
SelectorFactory& operator=(const SelectorFactory&) = delete;
|
||||
|
@ -111,7 +111,7 @@ namespace message2 {
|
|||
*
|
||||
* `MFFunctionRegistry` is immutable and movable. It is not copyable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API MFFunctionRegistry : public UObject {
|
||||
|
@ -131,7 +131,7 @@ namespace message2 {
|
|||
* if no formatter was registered under that name. The pointer is not owned
|
||||
* by the caller.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
FormatterFactory* getFormatter(const FunctionName& formatterName) const;
|
||||
|
@ -143,7 +143,7 @@ namespace message2 {
|
|||
* @return A pointer to the `SelectorFactory` registered under `selectorName`, or null
|
||||
* if no formatter was registered under that name.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
const SelectorFactory* getSelector(const FunctionName& selectorName) const;
|
||||
|
@ -157,7 +157,7 @@ namespace message2 {
|
|||
* @return True if and only if the function registry contains a default formatter for `formatterType`.
|
||||
* If the return value is false, then the value of `name` is undefined.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
UBool getDefaultFormatterNameByType(const UnicodeString& formatterType, FunctionName& name) const;
|
||||
|
@ -168,7 +168,7 @@ namespace message2 {
|
|||
*
|
||||
* Builder is not copyable or movable.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API Builder : public UObject {
|
||||
|
@ -208,7 +208,7 @@ namespace message2 {
|
|||
* @param errorCode Input/output error code
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& adoptFormatter(const data_model::FunctionName& formatterName, FormatterFactory* formatterFactory, UErrorCode& errorCode);
|
||||
|
@ -222,7 +222,7 @@ namespace message2 {
|
|||
* @param errorCode Input/output error code
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& setDefaultFormatterNameByType(const UnicodeString& type, const data_model::FunctionName& functionName, UErrorCode& errorCode);
|
||||
|
@ -236,7 +236,7 @@ namespace message2 {
|
|||
* @param errorCode Input/output error code
|
||||
* @return A reference to the builder.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder& adoptSelector(const data_model::FunctionName& selectorName, SelectorFactory* selectorFactory, UErrorCode& errorCode);
|
||||
|
@ -250,7 +250,7 @@ namespace message2 {
|
|||
*
|
||||
* @return The new MFFunctionRegistry
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MFFunctionRegistry build();
|
||||
|
@ -260,14 +260,14 @@ namespace message2 {
|
|||
*
|
||||
* @param errorCode Input/output error code
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
Builder(UErrorCode& errorCode);
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~Builder();
|
||||
|
@ -277,7 +277,7 @@ namespace message2 {
|
|||
* Move assignment operator:
|
||||
* The source MFFunctionRegistry will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MFFunctionRegistry& operator=(MFFunctionRegistry&&) noexcept;
|
||||
|
@ -285,14 +285,14 @@ namespace message2 {
|
|||
* Move constructor:
|
||||
* The source MFFunctionRegistry will be left in a valid but undefined state.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
MFFunctionRegistry(MFFunctionRegistry&& other) { *this = std::move(other); }
|
||||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~MFFunctionRegistry();
|
||||
|
@ -329,7 +329,7 @@ namespace message2 {
|
|||
/**
|
||||
* Interface that formatter classes must implement.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API Formatter : public UObject {
|
||||
|
@ -349,7 +349,7 @@ namespace message2 {
|
|||
*
|
||||
* @return The formatted value.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual FormattedPlaceholder format(FormattedPlaceholder&& toFormat,
|
||||
|
@ -358,7 +358,7 @@ namespace message2 {
|
|||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~Formatter();
|
||||
|
@ -367,7 +367,7 @@ namespace message2 {
|
|||
/**
|
||||
* Interface that selector classes must implement.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
class U_I18N_API Selector : public UObject {
|
||||
|
@ -391,7 +391,7 @@ namespace message2 {
|
|||
* to signal errors. The custom selector may pass `status` to other ICU functions
|
||||
* that can signal errors using this mechanism.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual void selectKey(FormattedPlaceholder&& toFormat,
|
||||
|
@ -406,7 +406,7 @@ namespace message2 {
|
|||
/**
|
||||
* Destructor.
|
||||
*
|
||||
* @internal ICU 75.0 technology preview
|
||||
* @internal ICU 75 technology preview
|
||||
* @deprecated This API is for technology preview only.
|
||||
*/
|
||||
virtual ~Selector();
|
||||
|
|
|
@ -3867,6 +3867,27 @@ const char* const basic_maximize_data[][2] = {
|
|||
// so "aaaa" is a well-formed unicode_language_id
|
||||
"aaaa",
|
||||
"aaaa",
|
||||
}, {
|
||||
// ICU-22727
|
||||
// unicode_language_subtag = alpha{2,3} | alpha{5,8};
|
||||
// so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
|
||||
// well-formed unicode_language_subtag and therefore
|
||||
// well-formed unicode_language_id
|
||||
// but "fffffffff" is not.
|
||||
"bbbbb",
|
||||
"bbbbb",
|
||||
}, {
|
||||
// ICU-22727
|
||||
"cccccc",
|
||||
"cccccc",
|
||||
}, {
|
||||
// ICU-22727
|
||||
"ddddddd",
|
||||
"ddddddd",
|
||||
}, {
|
||||
// ICU-22727
|
||||
"eeeeeeee",
|
||||
"eeeeeeee",
|
||||
}, {
|
||||
// ICU-22546
|
||||
"und-Zzzz",
|
||||
|
@ -6048,6 +6069,16 @@ const errorData maximizeErrors[] = {
|
|||
"en_Latn_US_POSIX@currency=EURO",
|
||||
U_STRING_NOT_TERMINATED_WARNING,
|
||||
30
|
||||
},
|
||||
{
|
||||
// ICU-22727
|
||||
// unicode_language_subtag = alpha{2,3} | alpha{5,8};
|
||||
// so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
|
||||
// well-formed unicode_language_id but "fffffffff" is not.
|
||||
"fffffffff",
|
||||
NULL,
|
||||
U_ILLEGAL_ARGUMENT_ERROR,
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -113,6 +113,9 @@ static void TestEnumList(void) {
|
|||
expectInList("VED", UCURR_NON_DEPRECATED, true);
|
||||
|
||||
expectInList("EQE", UCURR_ALL, false);
|
||||
|
||||
// CLDR 45 and ICU-22726
|
||||
expectInList("XCG", UCURR_ALL, true);
|
||||
}
|
||||
|
||||
static void TestEnumListReset(void) {
|
||||
|
|
|
@ -3915,6 +3915,31 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
|
|||
"aaaa",
|
||||
"aaaa",
|
||||
"aaaa",
|
||||
}, {
|
||||
// ICU-22727
|
||||
// unicode_language_subtag = alpha{2,3} | alpha{5,8};
|
||||
// so "bbbbb", "cccccc", "ddddddd", "eeeeeeee" are
|
||||
// well-formed unicode_language_subtag and therefore
|
||||
// well-formed unicode_language_id
|
||||
// but "fffffffff" is not.
|
||||
"bbbbb",
|
||||
"bbbbb",
|
||||
"bbbbb",
|
||||
}, {
|
||||
// ICU-22727
|
||||
"cccccc",
|
||||
"cccccc",
|
||||
"cccccc",
|
||||
}, {
|
||||
// ICU-22727
|
||||
"ddddddd",
|
||||
"ddddddd",
|
||||
"ddddddd",
|
||||
}, {
|
||||
// ICU-22727
|
||||
"eeeeeeee",
|
||||
"eeeeeeee",
|
||||
"eeeeeeee",
|
||||
}, {
|
||||
// ICU-22546
|
||||
"und-Zzzz",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Test data for unit conversions
|
||||
# Test data for personName formats
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
#
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
# Test data for unit conversions
|
||||
# Test data for personName formats
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
af.txt
|
||||
#af.txt
|
||||
am.txt
|
||||
ar.txt
|
||||
as.txt
|
||||
|
@ -19,31 +18,21 @@ cs.txt
|
|||
cy.txt
|
||||
da.txt
|
||||
de.txt
|
||||
de_CH.txt
|
||||
dsb.txt
|
||||
el.txt
|
||||
en.txt
|
||||
en_AU.txt
|
||||
en_CA.txt
|
||||
en_GB.txt
|
||||
en_IN.txt
|
||||
es.txt
|
||||
es_419.txt
|
||||
es_MX.txt
|
||||
es_US.txt
|
||||
et.txt
|
||||
eu.txt
|
||||
fa.txt
|
||||
fi.txt
|
||||
fil.txt
|
||||
fr.txt
|
||||
fr_CA.txt
|
||||
ga.txt
|
||||
gd.txt
|
||||
gl.txt
|
||||
gu.txt
|
||||
ha.txt
|
||||
ha_NE.txt
|
||||
he.txt
|
||||
hi.txt
|
||||
hi_Latn.txt
|
||||
|
@ -82,7 +71,6 @@ pa.txt
|
|||
pl.txt
|
||||
ps.txt
|
||||
pt.txt
|
||||
pt_PT.txt
|
||||
qu.txt
|
||||
ro.txt
|
||||
ru.txt
|
||||
|
@ -94,12 +82,9 @@ sl.txt
|
|||
so.txt
|
||||
sq.txt
|
||||
sr.txt
|
||||
sr_Cyrl_BA.txt
|
||||
sr_Latn.txt
|
||||
sr_Latn_BA.txt
|
||||
sv.txt
|
||||
sw.txt
|
||||
sw_KE.txt
|
||||
ta.txt
|
||||
te.txt
|
||||
tg.txt
|
||||
|
@ -113,10 +98,8 @@ uz.txt
|
|||
vi.txt
|
||||
wo.txt
|
||||
yo.txt
|
||||
yo_BJ.txt
|
||||
yue.txt
|
||||
yue_Hans.txt
|
||||
zh.txt
|
||||
zh_Hant.txt
|
||||
zh_Hant_HK.txt
|
||||
zu.txt
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: de_CH
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: en_AU
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: en_CA
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: en_GB
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: en_IN
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: es_419
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: es_MX
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: es_US
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: fr_CA
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Test data for unit conversions
|
||||
# Copyright © 1991-2023 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-DFS-2016
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
#
|
||||
# CLDR person name formatting test data for: ha_NE
|
||||
|
@ -24,7 +24,7 @@
|
|||
# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
|
||||
#
|
||||
# parameters; <options>; <length>; <usage>; <formality>
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
|
||||
# the expected value is produced.
|
||||
#
|
||||
# endName
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Test data for Person Name Data# Copyright © 1991-2024 Unicode, Inc.
|
||||
# Test data for Person Name Data
|
||||
# Copyright © 1991-2024 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/copyright.html
|
||||
# SPDX-License-Identifier: Unicode-3.0
|
||||
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue