Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

msgfmt.h

This is the verbatim text of the msgfmt.h include file.
/*
* Copyright © {1997-1999}, International Business Machines Corporation and others. All Rights Reserved.
********************************************************************************
*
* File MSGFMT.H
*
* Modification History:
*
*   Date        Name        Description
*   02/19/97    aliu        Converted from java.
*   03/20/97    helena      Finished first cut of implementation.
*    07/22/98    stephen        Removed operator!= (defined in Format)
********************************************************************************
*/
// *****************************************************************************
// This file was generated from the java source file MessageFormat.java
// *****************************************************************************
 
#ifndef MSGFMT_H
#define MSGFMT_H
 
#include "unicode/utypes.h"
#include "unicode/format.h"
#include "unicode/locid.h"
class NumberFormat;

class U_I18N_API MessageFormat : public Format {
public:
    enum EFormatNumber { kMaxFormat = 10 };
    MessageFormat(const UnicodeString& pattern,
                  UErrorCode &status);

    MessageFormat(const UnicodeString& pattern,
                  const Locale& newLocale,
                        UErrorCode& success);

    MessageFormat(const MessageFormat&);

    const MessageFormat& operator=(const MessageFormat&);

    virtual ~MessageFormat();

    virtual Format* clone(void) const;

    virtual UBool operator==(const Format& other) const;

    virtual void setLocale(const Locale& theLocale);

    virtual const Locale& getLocale(void) const;

    virtual void applyPattern(const UnicodeString& pattern,
                              UErrorCode& status);

    virtual UnicodeString& toPattern(UnicodeString& result) const;

    virtual void adoptFormats(Format** formatsToAdopt, int32_t count);

    virtual void setFormats(const Format** newFormats,int32_t cnt);


    virtual void adoptFormat(int32_t formatNumber, Format* formatToAdopt);

    virtual void setFormat(int32_t variable, const Format& newFormat);


    virtual const Format** getFormats(int32_t& count) const;

    UnicodeString& format(  const Formattable* source,
                            int32_t count,
                            UnicodeString& result,
                            FieldPosition& ignore,
                            UErrorCode& success) const;

    static UnicodeString& format(   const UnicodeString& pattern,
                                    const Formattable* arguments,
                                    int32_t count,
                                    UnicodeString& result, 
                                    UErrorCode& success);

    virtual UnicodeString& format(const Formattable& obj,
                                  UnicodeString& toAppendTo,
                                  FieldPosition& pos,
                                  UErrorCode& status) const;

    UnicodeString& format(const Formattable& obj,
                          UnicodeString& result,
                          UErrorCode& status) const;

    virtual Formattable* parse( const UnicodeString& source,
                                ParsePosition& status,
                                int32_t& count) const;

    virtual Formattable* parse( const UnicodeString& source,
                                int32_t& count,
                                UErrorCode& status) const;

    virtual void parseObject(const UnicodeString& source,
                             Formattable& result,
                             ParsePosition& parse_pos) const;

public:
    virtual UClassID getDynamicClassID(void) const;

    static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }

private:
    static char fgClassID;
    static NumberFormat* fgNumberFormat;

    // fgNumberFormat is held in a cache of one.

    static NumberFormat* getNumberFormat(UErrorCode &status); // call this function to 'check out' a numberformat from the cache.
    static void          releaseNumberFormat(NumberFormat *adopt); // call this function to 'return' the number format to the cache.

    Locale                 fLocale;
    UnicodeString         fPattern;
    // later, allow more than ten items
    Format                 *fFormats[kMaxFormat];
    int32_t             *fOffsets;
    int32_t             fCount;
    int32_t             *fArgumentNumbers;
    int32_t             fMaxOffset;
    
    static const int32_t         fgListLength;
    static const UnicodeString     fgTypeList[];
    static const UnicodeString     fgModifierList[];
    static const UnicodeString     fgDateModifierList[];

    static int32_t findKeyword( const UnicodeString& s, 
                            const UnicodeString* list);

    UnicodeString&  format( const Formattable* arguments, 
                            int32_t cnt, 
                            UnicodeString& result, 
                            FieldPosition& status, 
                            int32_t recursionProtection,
                            UErrorCode& success) const;

    void            makeFormat( int32_t position, 
                                int32_t offsetNumber, 
                                UnicodeString* segments, 
                                UErrorCode& success);

    NumberFormat* createIntegerFormat(const Locale& locale, UErrorCode& status) const;

    static void copyAndFixQuotes(const UnicodeString& source, int32_t start, int32_t end, UnicodeString& target);

    static int32_t stoi(const UnicodeString& string, UErrorCode& status);

    static UnicodeString& itos(int32_t i, UnicodeString& string);
};
 
inline UClassID 
MessageFormat::getDynamicClassID() const
{ 
    return MessageFormat::getStaticClassID(); 
}

inline UnicodeString&
MessageFormat::format(const Formattable& obj,
                      UnicodeString& result,
                      UErrorCode& status) const {
    return Format::format(obj, result, status);
}

#endif // _MSGFMT
//eof

Generated at Mon Jun 5 12:53:18 2000 for ICU1.5 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999