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;
625 using Format::format;
736 int32_t& count)
const;
803 UBool usesNamedArguments()
const;
806 #ifndef U_HIDE_INTERNAL_API
817 int32_t getArgTypeCount()
const;
844 static UClassID U_EXPORT2 getStaticClassID(
void);
846 #ifndef U_HIDE_INTERNAL_API
857 static UBool equalFormats(
const void* left,
const void* right);
865 int32_t formatAliasesCapacity;
878 virtual ~PluralSelectorProvider();
896 Formattable::Type* argTypes;
897 int32_t argTypeCount;
898 int32_t argTypeCapacity;
905 UBool hasArgTypeConflicts;
917 NumberFormat* defaultNumberFormat;
918 DateFormat* defaultDateFormat;
920 UHashtable* cachedFormatters;
921 UHashtable* customFormatArgStarts;
923 PluralSelectorProvider pluralProvider;
924 PluralSelectorProvider ordinalProvider;
930 const NumberFormat* getDefaultNumberFormat(
UErrorCode&)
const;
931 const DateFormat* getDefaultDateFormat(
UErrorCode&)
const;
939 static int32_t findKeyword(
const UnicodeString& s,
940 const UChar *
const *list);
947 UnicodeString&
format(
const Formattable* arguments,
948 const UnicodeString *argumentNames,
950 UnicodeString& appendTo,
971 void format(int32_t msgStart,
972 const void *plNumber,
973 const Formattable* arguments,
974 const UnicodeString *argumentNames,
976 AppendableWrapper& appendTo,
980 UnicodeString getArgName(int32_t partIndex);
982 void setArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
984 void setCustomArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
986 int32_t nextTopLevelArgStart(int32_t partIndex)
const;
988 UBool argNameMatches(int32_t partIndex,
const UnicodeString& argName, int32_t argNumber);
990 void cacheExplicitFormats(
UErrorCode& status);
992 Format* createAppropriateFormat(UnicodeString& type,
993 UnicodeString& style,
994 Formattable::Type& formattableType,
998 const Formattable* getArgFromListByName(
const Formattable* arguments,
999 const UnicodeString *argumentNames,
1000 int32_t cnt, UnicodeString& name)
const;
1002 Formattable* parse(int32_t msgStart,
1003 const UnicodeString& source,
1008 FieldPosition* updateMetaData(AppendableWrapper& dest, int32_t prevLength,
1009 FieldPosition* fp,
const Formattable* argId)
const;
1016 int32_t findOtherSubMessage(int32_t partIndex)
const;
1023 int32_t findFirstPluralNumberArg(int32_t msgStart,
const UnicodeString &argName)
const;
1025 Format* getCachedFormatter(int32_t argumentNumber)
const;
1027 UnicodeString getLiteralStringUntilNextArgument(int32_t from)
const;
1031 void formatComplexSubMessage(int32_t msgStart,
1032 const void *plNumber,
1033 const Formattable* arguments,
1034 const UnicodeString *argumentNames,
1036 AppendableWrapper& appendTo,
1042 NumberFormat* createIntegerFormat(
const Locale& locale,
UErrorCode& status)
const;
1051 const Formattable::Type* getArgTypeList(int32_t& listCount)
const {
1052 listCount = argTypeCount;
1059 void resetPattern();
1065 class U_I18N_API DummyFormat :
public Format {
1068 virtual Format* clone()
const;
1069 virtual UnicodeString& format(
const Formattable& obj,
1070 UnicodeString& appendTo,
1072 virtual UnicodeString& format(
const Formattable&,
1073 UnicodeString& appendTo,
1076 virtual UnicodeString& format(
const Formattable& obj,
1077 UnicodeString& appendTo,
1078 FieldPositionIterator* posIter,
1080 virtual void parseObject(
const UnicodeString&,
1082 ParsePosition&)
const;
1085 friend class MessageFormatAdapter;