29 #if !UCONFIG_NO_FORMATTING
46 class AppendableWrapper;
345 #ifndef U_HIDE_OBSOLETE_API
437 virtual void setLocale(
const Locale& theLocale);
499 return msgPattern.getApostropheMode();
528 virtual void adoptFormats(
Format** formatsToAdopt, int32_t count);
544 virtual void setFormats(
const Format** newFormats, int32_t cnt);
561 virtual void adoptFormat(int32_t formatNumber,
Format* formatToAdopt);
572 virtual void setFormat(int32_t formatNumber,
const Format& format);
642 virtual const Format** getFormats(int32_t& count)
const;
756 int32_t& count)
const;
823 UBool usesNamedArguments()
const;
826 #ifndef U_HIDE_INTERNAL_API
837 int32_t getArgTypeCount()
const;
864 static UClassID U_EXPORT2 getStaticClassID(
void);
866 #ifndef U_HIDE_INTERNAL_API
877 static UBool equalFormats(
const void* left,
const void* right);
885 int32_t formatAliasesCapacity;
895 class U_I18N_API PluralSelectorProvider :
public PluralFormat::PluralSelector {
898 virtual ~PluralSelectorProvider();
916 Formattable::Type* argTypes;
917 int32_t argTypeCount;
918 int32_t argTypeCapacity;
925 UBool hasArgTypeConflicts;
937 NumberFormat* defaultNumberFormat;
938 DateFormat* defaultDateFormat;
943 PluralSelectorProvider pluralProvider;
944 PluralSelectorProvider ordinalProvider;
950 const NumberFormat* getDefaultNumberFormat(
UErrorCode&)
const;
951 const DateFormat* getDefaultDateFormat(
UErrorCode&)
const;
959 static int32_t findKeyword(
const UnicodeString& s,
960 const char16_t *
const *list);
967 UnicodeString& format(
const Formattable* arguments,
968 const UnicodeString *argumentNames,
970 UnicodeString& appendTo,
991 void format(int32_t msgStart,
992 const void *plNumber,
993 const Formattable* arguments,
994 const UnicodeString *argumentNames,
996 AppendableWrapper& appendTo,
1000 UnicodeString getArgName(int32_t partIndex);
1002 void setArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
1004 void setCustomArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
1006 int32_t nextTopLevelArgStart(int32_t partIndex)
const;
1008 UBool argNameMatches(int32_t partIndex,
const UnicodeString& argName, int32_t argNumber);
1010 void cacheExplicitFormats(
UErrorCode& status);
1012 int32_t skipLeadingSpaces(UnicodeString& style);
1014 Format* createAppropriateFormat(UnicodeString& type,
1015 UnicodeString& style,
1016 Formattable::Type& formattableType,
1020 const Formattable* getArgFromListByName(
const Formattable* arguments,
1021 const UnicodeString *argumentNames,
1022 int32_t cnt, UnicodeString& name)
const;
1024 Formattable* parse(int32_t msgStart,
1025 const UnicodeString& source,
1030 FieldPosition* updateMetaData(AppendableWrapper& dest, int32_t prevLength,
1031 FieldPosition* fp,
const Formattable* argId)
const;
1038 int32_t findOtherSubMessage(int32_t partIndex)
const;
1045 int32_t findFirstPluralNumberArg(int32_t msgStart,
const UnicodeString &argName)
const;
1047 Format* getCachedFormatter(int32_t argumentNumber)
const;
1049 UnicodeString getLiteralStringUntilNextArgument(int32_t from)
const;
1051 void copyObjects(
const MessageFormat& that,
UErrorCode& ec);
1053 void formatComplexSubMessage(int32_t msgStart,
1054 const void *plNumber,
1055 const Formattable* arguments,
1056 const UnicodeString *argumentNames,
1058 AppendableWrapper& appendTo,
1064 NumberFormat* createIntegerFormat(
const Locale& locale,
UErrorCode& status)
const;
1073 const Formattable::Type* getArgTypeList(int32_t& listCount)
const {
1074 listCount = argTypeCount;
1081 void resetPattern();
1087 class U_I18N_API DummyFormat :
public Format {
1090 virtual Format* clone()
const;
1091 virtual UnicodeString& format(
const Formattable& obj,
1092 UnicodeString& appendTo,
1094 virtual UnicodeString& format(
const Formattable&,
1095 UnicodeString& appendTo,
1098 virtual UnicodeString& format(
const Formattable& obj,
1099 UnicodeString& appendTo,
1100 FieldPositionIterator* posIter,
1102 virtual void parseObject(
const UnicodeString&,
1104 ParsePosition&)
const;
1107 friend class MessageFormatAdapter;
struct UHashtable UHashtable
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
C++ API: PluralFormat object.
Base class for 'pure' C++ implementations of uenum api.
C++ API: PluralRules object.
Defines rules for mapping non-negative numeric values onto a small set of keywords.
Parses and represents ICU MessageFormat patterns.
#define U_CDECL_BEGIN
This is used to begin a declaration of a library private ICU C API.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
#define U_CDECL_END
This is used to end a declaration of a library private ICU C API.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
C API: Parse Error Information.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
UPluralType
Type of plurals and PluralRules.
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
C++ API: Locale ID object.
A UParseError struct is used to returned detailed information about parsing errors.
Basic definitions for ICU, for both C and C++ APIs.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
C++ API: MessagePattern class: Parses and represents ICU MessageFormat patterns.
UMessagePatternApostropheMode
Mode for when an apostrophe starts quoted literal text for MessageFormat output.
int8_t UBool
The ICU boolean type.
A Locale object represents a specific geographical, political, or cultural region.