24 #if U_SHOW_CPLUSPLUS_API
31 #if !UCONFIG_NO_FORMATTING
48 class AppendableWrapper;
347 #ifndef U_HIDE_OBSOLETE_API
439 virtual void setLocale(
const Locale& theLocale);
501 return msgPattern.getApostropheMode();
530 virtual void adoptFormats(
Format** formatsToAdopt, int32_t count);
546 virtual void setFormats(
const Format** newFormats, int32_t cnt);
563 virtual void adoptFormat(int32_t formatNumber,
Format* formatToAdopt);
574 virtual void setFormat(int32_t formatNumber,
const Format& format);
644 virtual const Format** getFormats(int32_t& count)
const;
758 int32_t& count)
const;
825 UBool usesNamedArguments()
const;
828 #ifndef U_HIDE_INTERNAL_API
839 int32_t getArgTypeCount()
const;
866 static UClassID U_EXPORT2 getStaticClassID(
void);
868 #ifndef U_HIDE_INTERNAL_API
879 static UBool equalFormats(
const void* left,
const void* right);
887 int32_t formatAliasesCapacity;
897 class U_I18N_API PluralSelectorProvider :
public PluralFormat::PluralSelector {
900 virtual ~PluralSelectorProvider();
918 Formattable::Type* argTypes;
919 int32_t argTypeCount;
920 int32_t argTypeCapacity;
927 UBool hasArgTypeConflicts;
939 NumberFormat* defaultNumberFormat;
940 DateFormat* defaultDateFormat;
945 PluralSelectorProvider pluralProvider;
946 PluralSelectorProvider ordinalProvider;
952 const NumberFormat* getDefaultNumberFormat(
UErrorCode&)
const;
953 const DateFormat* getDefaultDateFormat(
UErrorCode&)
const;
961 static int32_t findKeyword(
const UnicodeString& s,
962 const char16_t *
const *list);
969 UnicodeString& format(
const Formattable* arguments,
970 const UnicodeString *argumentNames,
972 UnicodeString& appendTo,
993 void format(int32_t msgStart,
994 const void *plNumber,
995 const Formattable* arguments,
996 const UnicodeString *argumentNames,
998 AppendableWrapper& appendTo,
1002 UnicodeString getArgName(int32_t partIndex);
1004 void setArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
1006 void setCustomArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
1008 int32_t nextTopLevelArgStart(int32_t partIndex)
const;
1010 UBool argNameMatches(int32_t partIndex,
const UnicodeString& argName, int32_t argNumber);
1012 void cacheExplicitFormats(
UErrorCode& status);
1014 int32_t skipLeadingSpaces(UnicodeString& style);
1016 Format* createAppropriateFormat(UnicodeString& type,
1017 UnicodeString& style,
1018 Formattable::Type& formattableType,
1022 const Formattable* getArgFromListByName(
const Formattable* arguments,
1023 const UnicodeString *argumentNames,
1024 int32_t cnt, UnicodeString& name)
const;
1026 Formattable* parse(int32_t msgStart,
1027 const UnicodeString& source,
1032 FieldPosition* updateMetaData(AppendableWrapper& dest, int32_t prevLength,
1033 FieldPosition* fp,
const Formattable* argId)
const;
1040 int32_t findOtherSubMessage(int32_t partIndex)
const;
1047 int32_t findFirstPluralNumberArg(int32_t msgStart,
const UnicodeString &argName)
const;
1049 Format* getCachedFormatter(int32_t argumentNumber)
const;
1051 UnicodeString getLiteralStringUntilNextArgument(int32_t from)
const;
1053 void copyObjects(
const MessageFormat& that,
UErrorCode& ec);
1055 void formatComplexSubMessage(int32_t msgStart,
1056 const void *plNumber,
1057 const Formattable* arguments,
1058 const UnicodeString *argumentNames,
1060 AppendableWrapper& appendTo,
1066 NumberFormat* createIntegerFormat(
const Locale& locale,
UErrorCode& status)
const;
1075 const Formattable::Type* getArgTypeList(int32_t& listCount)
const {
1076 listCount = argTypeCount;
1083 void resetPattern();
1089 class U_I18N_API DummyFormat :
public Format {
1091 virtual bool operator==(
const Format&)
const override;
1092 virtual DummyFormat* clone()
const override;
1093 virtual UnicodeString& format(
const Formattable& obj,
1094 UnicodeString& appendTo,
1096 virtual UnicodeString& format(
const Formattable&,
1097 UnicodeString& appendTo,
1100 virtual UnicodeString& format(
const Formattable& obj,
1101 UnicodeString& appendTo,
1102 FieldPositionIterator* posIter,
1104 virtual void parseObject(
const UnicodeString&,
1106 ParsePosition&)
const override;
1109 friend class MessageFormatAdapter;