16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Copyright (C) 1996-2013, International Business Machines Corporation
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   and others.  All Rights Reserved.
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File resbund.h
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   CREATED BY
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*       Richard Gillam
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History:
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Date        Name        Description
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   2/5/97      aliu        Added scanForLocaleInFile.  Added
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           constructor which attempts to read resource bundle
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           from a specific file, without searching other files.
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   2/11/97     aliu        Added UErrorCode return values to constructors.  Fixed
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           infinite loops in scanForFile and scanForLocale.
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           Modified getRawResourceData to not delete storage
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           in localeData and resourceData which it doesn't own.
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           Added Mac compatibility #ifdefs for tellp() and
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           ios::nocreate.
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   2/18/97     helena      Updated with 100% documentation coverage.
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   3/13/97     aliu        Rewrote to load in entire resource bundle and store
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           it as a Hashtable of ResourceBundleData objects.
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           Added state table to govern parsing of files.
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           Modified to load locale index out of new file
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           distinct from default.txt.
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   3/25/97     aliu        Modified to support 2-d arrays, needed for timezone
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           data. Added support for custom file suffixes.  Again,
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           needed to support timezone data.
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   4/7/97      aliu        Cleaned up.
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 03/02/99      stephen     Removed dependency on FILE*.
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 03/29/99      helena      Merged Bertrand and Stephen's changes.
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 06/11/99      stephen     Removed parsing of .txt files.
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           Reworked to use new binary format.
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*                           Cleaned up.
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 06/14/99      stephen     Removed methods taking a filename suffix.
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 11/09/99      weiv        Added getLocale(), fRealLocale, removed fRealLocaleID
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef RESBUND_H
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define RESBUND_H
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h"
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uobject.h"
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ures.h"
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h"
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/locid.h"
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \file
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \brief C++ API: Resource Bundle
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * A class representing a collection of resource information pertaining to a given
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale. A resource bundle provides a way of accessing locale- specfic information in
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a data file. You create a resource bundle that manages the resources for a given
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * locale and then ask it for individual resources.
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P>
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Resource bundles in ICU4C are currently defined using text files which conform to the following
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/bnf_rb.txt">BNF definition</a>.
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * More on resource bundle concepts and syntax can be found in the
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <a href="http://icu-project.org/userguide/ResourceManagement.html">Users Guide</a>.
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P>
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The ResourceBundle class is not suitable for subclassing.
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass U_COMMON_API ResourceBundle : public UObject {
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Constructor
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param packageName   The packageName and locale together point to an ICU udata object,
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      as defined by <code> udata_open( packageName, "res", locale, err) </code>
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      or equivalent.  Typically, packageName will refer to a (.dat) file, or to
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      a package registered with udata_setAppData(). Using a full file or directory
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      pathname for packageName is deprecated.
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param locale  This is the locale this resource bundle is for. To get resources
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                for the French locale, for example, you would create a
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                ResourceBundle passing Locale::FRENCH for the "locale" parameter,
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                and all subsequent calls to that resource bundle will return
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                resources that pertain to the French locale. If the caller doesn't
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                pass a locale parameter, the default locale for the system (as
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                returned by Locale::getDefault()) will be used.
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param err     The Error Code.
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * The UErrorCode& err parameter is used to return status information to the user. To
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * check whether the construction succeeded or not, you should check the value of
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * U_SUCCESS(err). If you wish more detailed information, you can check for
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * informational error results which still indicate success. U_USING_FALLBACK_WARNING
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * indicates that a fall back locale was used. For example, 'de_CH' was requested,
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * but nothing was found there, so 'de' was used. U_USING_DEFAULT_WARNING indicates that
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * the default locale data was used; neither the requested locale nor any of its
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * fall back locales could be found.
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(const UnicodeString&    packageName,
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                   const Locale&           locale,
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                   UErrorCode&              err);
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Construct a resource bundle for the default bundle in the specified package.
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param packageName   The packageName and locale together point to an ICU udata object,
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      as defined by <code> udata_open( packageName, "res", locale, err) </code>
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      or equivalent.  Typically, packageName will refer to a (.dat) file, or to
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      a package registered with udata_setAppData(). Using a full file or directory
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      pathname for packageName is deprecated.
1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param err A UErrorCode value
1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(const UnicodeString&    packageName,
1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                   UErrorCode&              err);
1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Construct a resource bundle for the ICU default bundle.
1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param err A UErrorCode value
1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(UErrorCode &err);
1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Standard constructor, onstructs a resource bundle for the locale-specific
1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * bundle in the specified package.
1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param packageName   The packageName and locale together point to an ICU udata object,
1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      as defined by <code> udata_open( packageName, "res", locale, err) </code>
1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      or equivalent.  Typically, packageName will refer to a (.dat) file, or to
1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      a package registered with udata_setAppData(). Using a full file or directory
1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      pathname for packageName is deprecated.
1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                      NULL is used to refer to ICU data.
1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param locale The locale for which to open a resource bundle.
1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param err A UErrorCode value
1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(const char* packageName,
1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                   const Locale& locale,
1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                   UErrorCode& err);
1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Copy constructor.
1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param original The resource bundle to copy.
1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(const ResourceBundle &original);
1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Constructor from a C UResourceBundle. The resource bundle is
1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * copied and not adopted. ures_close will still need to be used on the
1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * original resource bundle.
1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param res A pointer to the C resource bundle.
1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status A UErrorCode value.
1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(UResourceBundle *res,
1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                   UErrorCode &status);
1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Assignment operator.
1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param other The resource bundle to copy.
1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle&
1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      operator=(const ResourceBundle& other);
1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /** Destructor.
1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual ~ResourceBundle();
1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Clone this object.
1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Clones can be used concurrently in multiple threads.
1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * If an error occurs, then NULL is returned.
1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * The caller must delete the clone.
1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a clone of this object
1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @see getDynamicClassID
1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.8
1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle *clone() const;
1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the size of a resource. Size for scalar types is always 1, and for vector/table types is
1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * the number of child resources.
2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @warning Integer array is treated as a scalar type. There are no
2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *          APIs to access individual members of an integer array. It
2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *          is always returned as a whole.
2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return number of resources in a given resource.
2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    int32_t
2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getSize(void) const;
2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * returns a string from a string resource type
2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status  fills in the outgoing error code
2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be a warning
2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString
2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getString(UErrorCode& status) const;
2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * returns a binary data from a resource. Can be used at most primitive resource types (binaries,
2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * strings, ints)
2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param len     fills in the length of resulting byte chunk
2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status  fills in the outgoing error code
2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be a warning
2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a pointer to a chunk of unsigned bytes which live in a memory mapped/DLL file.
2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const uint8_t*
2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getBinary(int32_t& len, UErrorCode& status) const;
2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * returns an integer vector from a resource.
2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param len     fills in the length of resulting integer vector
2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status  fills in the outgoing error code
2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be a warning
2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a pointer to a vector of integers that lives in a memory mapped/DLL file.
2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const int32_t*
2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getIntVector(int32_t& len, UErrorCode& status) const;
2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * returns an unsigned integer from a resource.
2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * This integer is originally 28 bits.
2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status  fills in the outgoing error code
2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be a warning
2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return an unsigned integer value
2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    uint32_t
2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getUInt(UErrorCode& status) const;
2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * returns a signed integer from a resource.
2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * This integer is originally 28 bit and the sign gets propagated.
2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status  fills in the outgoing error code
2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                could be a warning
2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a signed integer value
2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    int32_t
2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getInt(UErrorCode& status) const;
2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Checks whether the resource has another element to iterate over.
2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return TRUE if there are more elements, FALSE if there is no more elements
2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UBool
2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      hasNext(void) const;
2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Resets the internal context of a resource so that iteration starts from the first element.
2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void
2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      resetIterator(void);
2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the key associated with this resource. Not all the resources have a key - only
3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * those that are members of a table.
3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a key associated to this resource, or NULL if it doesn't have a key
3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const char*
3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getKey(void) const;
3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Gets the locale ID of the resource bundle as a string.
3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Same as getLocale().getName() .
3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return the locale ID of the resource bundle as a string
3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const char*
3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getName(void) const;
3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the type of a resource. Available types are defined in enum UResType
3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return type of the given resource.
3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UResType
3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getType(void) const;
3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the next resource in a given resource or NULL if there are no more resources
3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code
3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return                  ResourceBundle object.
3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle
3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getNext(UErrorCode& status);
3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the next string in a resource or NULL if there are no more resources
3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * to iterate over.
3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code
3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return an UnicodeString object.
3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString
3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getNextString(UErrorCode& status);
3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the next string in a resource or NULL if there are no more resources
3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * to iterate over.
3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param key               fill in for key associated with this string
3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code
3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return an UnicodeString object.
3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString
3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getNextString(const char ** key,
3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                    UErrorCode& status);
3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the resource in a resource at the specified index.
3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param index             an index to the wanted resource.
3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code
3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return                  ResourceBundle object. If there is an error, resource is invalid.
3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle
3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      get(int32_t index,
3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          UErrorCode& status) const;
3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns the string in a given resource at the specified index.
3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param index             an index to the wanted string.
3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code
3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return                  an UnicodeString object. If there is an error, string is bogus
3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString
3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getStringEx(int32_t index,
3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                  UErrorCode& status) const;
3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns a resource in a resource that has a given key. This procedure works only with table
3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * resources.
3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param key               a key associated with the wanted resource
3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code.
3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return                  ResourceBundle object. If there is an error, resource is invalid.
3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle
3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      get(const char* key,
3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org          UErrorCode& status) const;
3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Returns a string in a resource that has a given key. This procedure works only with table
4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * resources.
4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param key               a key associated with the wanted string
4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status            fills in the outgoing error code
4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return                  an UnicodeString object. If there is an error, string is bogus
4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UnicodeString
4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getStringEx(const char* key,
4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                  UErrorCode& status) const;
4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DEPRECATED_API
4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Return the version number associated with this ResourceBundle as a string. Please
4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * use getVersion, as this method is going to be deprecated.
4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return  A version number string as specified in the resource bundle or its parent.
4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *          The caller does not own this string.
4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @see getVersion
4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @deprecated ICU 2.8 Use getVersion instead.
4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const char*
4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getVersionNumber(void) const;
4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif  /* U_HIDE_DEPRECATED_API */
4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Return the version number associated with this ResourceBundle as a UVersionInfo array.
4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param versionInfo A UVersionInfo array that is filled with the version number
4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *                    as specified in the resource bundle or its parent.
4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.0
4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void
4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getVersion(UVersionInfo versionInfo) const;
4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DEPRECATED_API
4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Return the Locale associated with this ResourceBundle.
4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a Locale object
4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @deprecated ICU 2.8 Use getLocale(ULocDataLocaleType type, UErrorCode &status) overload instead.
4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const Locale&
4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getLocale(void) const;
4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif  /* U_HIDE_DEPRECATED_API */
4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Return the Locale associated with this ResourceBundle.
4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param type You can choose between requested, valid and actual
4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *             locale. For description see the definition of
4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *             ULocDataLocaleType in uloc.h
4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @param status just for catching illegal arguments
4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @return a Locale object
4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.8
4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const Locale
4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      getLocale(ULocDataLocaleType type, UErrorCode &status) const;
4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_INTERNAL_API
4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * This API implements multilevel fallback
4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @internal
4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle
4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        getWithFallback(const char* key, UErrorCode& status);
4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif  /* U_HIDE_INTERNAL_API */
4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * ICU "poor man's RTTI", returns a UClassID for the actual class.
4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.2
4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual UClassID getDynamicClassID() const;
4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * ICU "poor man's RTTI", returns a UClassID for this class.
4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *
4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * @stable ICU 2.2
4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static UClassID U_EXPORT2 getStaticClassID();
4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ResourceBundle(); // default constructor not implemented
4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UResourceBundle *fResource;
4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void constructForLocale(const UnicodeString& path, const Locale& locale, UErrorCode& error);
4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    Locale *fLocale;
4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END
4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
491