27 #if !UCONFIG_NO_FORMATTING
39 typedef struct UHashtable UHashtable;
44 class AppendableWrapper;
325 #ifndef U_HIDE_OBSOLETE_API
417 virtual void setLocale(
const Locale& theLocale);
479 return msgPattern.getApostropheMode();
508 virtual void adoptFormats(
Format** formatsToAdopt, int32_t count);
524 virtual void setFormats(
const Format** newFormats, int32_t cnt);
541 virtual void adoptFormat(int32_t formatNumber,
Format* formatToAdopt);
552 virtual void setFormat(int32_t formatNumber,
const Format& format);
622 virtual const Format** getFormats(int32_t& count)
const;
755 int32_t& count)
const;
822 UBool usesNamedArguments()
const;
825 #ifndef U_HIDE_INTERNAL_API
836 int32_t getArgTypeCount()
const;
863 static UClassID U_EXPORT2 getStaticClassID(
void);
865 #ifndef U_HIDE_INTERNAL_API
876 static UBool equalFormats(
const void* left,
const void* right);
884 int32_t formatAliasesCapacity;
897 virtual ~PluralSelectorProvider();
900 void reset(
const Locale* loc);
915 Formattable::Type* argTypes;
916 int32_t argTypeCount;
917 int32_t argTypeCapacity;
924 UBool hasArgTypeConflicts;
936 NumberFormat* defaultNumberFormat;
937 DateFormat* defaultDateFormat;
939 UHashtable* cachedFormatters;
940 UHashtable* customFormatArgStarts;
942 PluralSelectorProvider pluralProvider;
943 PluralSelectorProvider ordinalProvider;
949 const NumberFormat* getDefaultNumberFormat(
UErrorCode&)
const;
950 const DateFormat* getDefaultDateFormat(
UErrorCode&)
const;
958 static int32_t findKeyword(
const UnicodeString& s,
959 const UChar *
const *list);
966 UnicodeString&
format(
const Formattable* arguments,
967 const UnicodeString *argumentNames,
969 UnicodeString& appendTo,
990 void format(int32_t msgStart,
992 const Formattable* arguments,
993 const UnicodeString *argumentNames,
995 AppendableWrapper& appendTo,
999 UnicodeString getArgName(int32_t partIndex);
1001 void setArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
1003 void setCustomArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
1005 int32_t nextTopLevelArgStart(int32_t partIndex)
const;
1007 UBool argNameMatches(int32_t partIndex,
const UnicodeString& argName, int32_t argNumber);
1009 void cacheExplicitFormats(
UErrorCode& status);
1011 Format* createAppropriateFormat(UnicodeString& type,
1012 UnicodeString& style,
1013 Formattable::Type& formattableType,
1017 const Formattable* getArgFromListByName(
const Formattable* arguments,
1018 const UnicodeString *argumentNames,
1019 int32_t cnt, UnicodeString& name)
const;
1021 Formattable* parse(int32_t msgStart,
1022 const UnicodeString& source,
1027 FieldPosition* updateMetaData(AppendableWrapper& dest, int32_t prevLength,
1028 FieldPosition* fp,
const Formattable* argId)
const;
1030 Format* getCachedFormatter(int32_t argumentNumber)
const;
1032 UnicodeString getLiteralStringUntilNextArgument(int32_t from)
const;
1036 void formatComplexSubMessage(int32_t msgStart,
1037 double pluralNumber,
1038 const Formattable* arguments,
1039 const UnicodeString *argumentNames,
1041 AppendableWrapper& appendTo,
1047 NumberFormat* createIntegerFormat(
const Locale& locale,
UErrorCode& status)
const;
1057 const Formattable::Type* getArgTypeList(int32_t& listCount)
const {
1058 listCount = argTypeCount;
1065 void resetPattern();
1072 class U_I18N_API DummyFormat :
public Format {
1075 virtual Format* clone()
const;
1076 virtual UnicodeString& format(
const Formattable& obj,
1077 UnicodeString& appendTo,
1079 virtual UnicodeString& format(
const Formattable&,
1080 UnicodeString& appendTo,
1083 virtual UnicodeString& format(
const Formattable& obj,
1084 UnicodeString& appendTo,
1085 FieldPositionIterator* posIter,
1087 virtual void parseObject(
const UnicodeString&,
1089 ParsePosition&)
const;
1090 virtual UClassID getDynamicClassID()
const;
1093 friend class MessageFormatAdapter;
1096 inline UnicodeString&
1100 return Format::format(obj, appendTo, status);