00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef CHOICFMT_H
00023
#define CHOICFMT_H
00024
00025
#include "unicode/utypes.h"
00026
00027
#if !UCONFIG_NO_FORMATTING
00028
00029
#include "unicode/unistr.h"
00030
#include "unicode/numfmt.h"
00031
#include "unicode/fieldpos.h"
00032
#include "unicode/format.h"
00033
00034
U_NAMESPACE_BEGIN
00035
00036
class MessageFormat;
00037
00250 class U_I18N_API ChoiceFormat:
public NumberFormat {
00251
public:
00261 ChoiceFormat(
const UnicodeString& pattern,
00262
UErrorCode& status);
00263
00264
00275 ChoiceFormat(
const double* limits,
00276
const UnicodeString* formats,
00277 int32_t count );
00278
00296 ChoiceFormat(
const double* limits,
00297
const UBool* closures,
00298
const UnicodeString* formats,
00299 int32_t count);
00300
00307 ChoiceFormat(
const ChoiceFormat& that);
00308
00315
const ChoiceFormat& operator=(
const ChoiceFormat& that);
00316
00321
virtual ~ChoiceFormat();
00322
00330
virtual Format*
clone(
void)
const;
00331
00340
virtual UBool operator==(
const Format& other)
const;
00341
00350
virtual void applyPattern(
const UnicodeString& pattern,
00351
UErrorCode& status);
00352
00363
virtual void applyPattern(
const UnicodeString& pattern,
00364
UParseError& parseError,
00365
UErrorCode& status);
00374
virtual UnicodeString& toPattern(
UnicodeString &pattern)
const;
00375
00376
#ifdef U_USE_CHOICE_FORMAT_DEPRECATES
00377
00390
virtual void adoptChoices(
double* limitsToAdopt,
00391
UnicodeString* formatsToAdopt,
00392 int32_t count );
00393
00404
virtual void adoptChoices(
double* limitsToAdopt,
00405
UBool* closuresToAdopt,
00406
UnicodeString* formatsToAdopt,
00407 int32_t count);
00408
#endif
00409
00422
virtual void setChoices(
const double* limitsToCopy,
00423
const UnicodeString* formatsToCopy,
00424 int32_t count );
00425
00435
virtual void setChoices(
const double* limits,
00436
const UBool* closures,
00437
const UnicodeString* formats,
00438 int32_t count);
00439
00447
virtual const double* getLimits(int32_t& count)
const;
00448
00457
virtual const UBool* getClosures(int32_t& count)
const;
00458
00466
virtual const UnicodeString* getFormats(int32_t& count)
const;
00467
00479
virtual UnicodeString& format(
double number,
00480
UnicodeString& appendTo,
00481
FieldPosition& pos)
const;
00493
virtual UnicodeString& format(int32_t number,
00494
UnicodeString& appendTo,
00495
FieldPosition& pos)
const;
00496
00508
virtual UnicodeString& format(int64_t number,
00509
UnicodeString& appendTo,
00510
FieldPosition& pos)
const;
00511
00526
virtual UnicodeString& format(
const Formattable* objs,
00527 int32_t cnt,
00528
UnicodeString& appendTo,
00529
FieldPosition& pos,
00530
UErrorCode& success)
const;
00545
virtual UnicodeString& format(
const Formattable& obj,
00546
UnicodeString& appendTo,
00547
FieldPosition& pos,
00548
UErrorCode& status)
const;
00549
00561
UnicodeString& format(
const Formattable& obj,
00562
UnicodeString& appendTo,
00563
UErrorCode& status)
const;
00564
00576
UnicodeString& format(
double number,
00577
UnicodeString& appendTo)
const;
00578
00590
UnicodeString& format( int32_t number,
00591
UnicodeString& appendTo)
const;
00592
00611
virtual void parse(
const UnicodeString& text,
00612
Formattable& result,
00613
ParsePosition& parsePosition)
const;
00614
00631
virtual void parse(
const UnicodeString& text,
00632
Formattable& result,
00633
UErrorCode& status)
const;
00634
00635
00636
public:
00648
virtual UClassID getDynamicClassID(
void)
const;
00649
00661
static UClassID getStaticClassID(
void);
00662
00663
private:
00664
00665
00666
00667
00674
static double stod(
const UnicodeString& string);
00675
00683
static UnicodeString& dtos(
double value,
UnicodeString& string);
00684
00685 ChoiceFormat();
00686
00698 ChoiceFormat(
const UnicodeString& newPattern,
00699
UParseError& parseError,
00700
UErrorCode& status);
00701
00702
friend class MessageFormat;
00740
double* fChoiceLimits;
00741
UBool* fClosures;
00742
UnicodeString* fChoiceFormats;
00743 int32_t fCount;
00744 };
00745
00746
inline UnicodeString&
00747 ChoiceFormat::format(
const Formattable& obj,
00748
UnicodeString& appendTo,
00749 UErrorCode& status)
const {
00750
00751
00752
return NumberFormat::format(obj, appendTo, status);
00753 }
00754
00755
inline UnicodeString&
00756 ChoiceFormat::format(
double number,
00757
UnicodeString& appendTo)
const {
00758
return NumberFormat::format(number, appendTo);
00759 }
00760
00761
inline UnicodeString&
00762 ChoiceFormat::format(int32_t number,
00763
UnicodeString& appendTo)
const {
00764
return NumberFormat::format(number, appendTo);
00765 }
00766
U_NAMESPACE_END
00767
00768
#endif
00769
00770
#endif // _CHOICFMT
00771