29 #if !UCONFIG_NO_FORMATTING
41 typedef struct UHashtable UHashtable;
46 class AppendableWrapper;
327 #ifndef U_HIDE_OBSOLETE_API
419 virtual void setLocale(
const Locale& theLocale);
481 return msgPattern.getApostropheMode();
510 virtual void adoptFormats(
Format** formatsToAdopt, int32_t count);
526 virtual void setFormats(
const Format** newFormats, int32_t cnt);
543 virtual void adoptFormat(int32_t formatNumber,
Format* formatToAdopt);
554 virtual void setFormat(int32_t formatNumber,
const Format& format);
624 virtual const Format** getFormats(int32_t& count)
const;
738 int32_t& count)
const;
805 UBool usesNamedArguments()
const;
808 #ifndef U_HIDE_INTERNAL_API
819 int32_t getArgTypeCount()
const;
846 static UClassID U_EXPORT2 getStaticClassID(
void);
848 #ifndef U_HIDE_INTERNAL_API
859 static UBool equalFormats(
const void* left,
const void* right);
867 int32_t formatAliasesCapacity;
880 virtual ~PluralSelectorProvider();
898 Formattable::Type* argTypes;
899 int32_t argTypeCount;
900 int32_t argTypeCapacity;
907 UBool hasArgTypeConflicts;
919 NumberFormat* defaultNumberFormat;
920 DateFormat* defaultDateFormat;
922 UHashtable* cachedFormatters;
923 UHashtable* customFormatArgStarts;
925 PluralSelectorProvider pluralProvider;
926 PluralSelectorProvider ordinalProvider;
932 const NumberFormat* getDefaultNumberFormat(
UErrorCode&)
const;
933 const DateFormat* getDefaultDateFormat(
UErrorCode&)
const;
941 static int32_t findKeyword(
const UnicodeString& s,
942 const char16_t *
const *list);
949 UnicodeString&
format(
const Formattable* arguments,
950 const UnicodeString *argumentNames,
952 UnicodeString& appendTo,
973 void format(int32_t msgStart,
974 const void *plNumber,
975 const Formattable* arguments,
976 const UnicodeString *argumentNames,
978 AppendableWrapper& appendTo,
982 UnicodeString getArgName(int32_t partIndex);
984 void setArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
986 void setCustomArgStartFormat(int32_t argStart, Format* formatter,
UErrorCode& status);
988 int32_t nextTopLevelArgStart(int32_t partIndex)
const;
990 UBool argNameMatches(int32_t partIndex,
const UnicodeString& argName, int32_t argNumber);
992 void cacheExplicitFormats(
UErrorCode& status);
994 Format* createAppropriateFormat(UnicodeString& type,
995 UnicodeString& style,
996 Formattable::Type& formattableType,
1000 const Formattable* getArgFromListByName(
const Formattable* arguments,
1001 const UnicodeString *argumentNames,
1002 int32_t cnt, UnicodeString& name)
const;
1004 Formattable* parse(int32_t msgStart,
1005 const UnicodeString& source,
1010 FieldPosition* updateMetaData(AppendableWrapper& dest, int32_t prevLength,
1011 FieldPosition* fp,
const Formattable* argId)
const;
1018 int32_t findOtherSubMessage(int32_t partIndex)
const;
1025 int32_t findFirstPluralNumberArg(int32_t msgStart,
const UnicodeString &argName)
const;
1027 Format* getCachedFormatter(int32_t argumentNumber)
const;
1029 UnicodeString getLiteralStringUntilNextArgument(int32_t from)
const;
1033 void formatComplexSubMessage(int32_t msgStart,
1034 const void *plNumber,
1035 const Formattable* arguments,
1036 const UnicodeString *argumentNames,
1038 AppendableWrapper& appendTo,
1044 NumberFormat* createIntegerFormat(
const Locale& locale,
UErrorCode& status)
const;
1053 const Formattable::Type* getArgTypeList(int32_t& listCount)
const {
1054 listCount = argTypeCount;
1061 void resetPattern();
1067 class U_I18N_API DummyFormat :
public Format {
1070 virtual Format* clone()
const;
1071 virtual UnicodeString& format(
const Formattable& obj,
1072 UnicodeString& appendTo,
1074 virtual UnicodeString& format(
const Formattable&,
1075 UnicodeString& appendTo,
1078 virtual UnicodeString& format(
const Formattable& obj,
1079 UnicodeString& appendTo,
1080 FieldPositionIterator* posIter,
1082 virtual void parseObject(
const UnicodeString&,
1084 ParsePosition&)
const;
1087 friend class MessageFormatAdapter;