1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
459d709d503bab6e2b61931737e662dd293b40578ccornelius*   Copyright (C) 1996-2013, International Business Machines Corporation
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   and others.  All Rights Reserved.
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* File resbund.h
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   CREATED BY
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*       Richard Gillam
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Modification History:
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   Date        Name        Description
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   2/5/97      aliu        Added scanForLocaleInFile.  Added
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           constructor which attempts to read resource bundle
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           from a specific file, without searching other files.
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   2/11/97     aliu        Added UErrorCode return values to constructors.  Fixed
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           infinite loops in scanForFile and scanForLocale.
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           Modified getRawResourceData to not delete storage
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           in localeData and resourceData which it doesn't own.
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           Added Mac compatibility #ifdefs for tellp() and
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           ios::nocreate.
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   2/18/97     helena      Updated with 100% documentation coverage.
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   3/13/97     aliu        Rewrote to load in entire resource bundle and store
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           it as a Hashtable of ResourceBundleData objects.
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           Added state table to govern parsing of files.
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           Modified to load locale index out of new file
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           distinct from default.txt.
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   3/25/97     aliu        Modified to support 2-d arrays, needed for timezone
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           data. Added support for custom file suffixes.  Again,
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           needed to support timezone data.
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   4/7/97      aliu        Cleaned up.
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 03/02/99      stephen     Removed dependency on FILE*.
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 03/29/99      helena      Merged Bertrand and Stephen's changes.
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 06/11/99      stephen     Removed parsing of .txt files.
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           Reworked to use new binary format.
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*                           Cleaned up.
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 06/14/99      stephen     Removed methods taking a filename suffix.
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 11/09/99      weiv        Added getLocale(), fRealLocale, removed fRealLocaleID
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef RESBUND_H
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define RESBUND_H
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uobject.h"
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ures.h"
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/unistr.h"
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/locid.h"
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \brief C++ API: Resource Bundle
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A class representing a collection of resource information pertaining to a given
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * locale. A resource bundle provides a way of accessing locale- specfic information in
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * a data file. You create a resource bundle that manages the resources for a given
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * locale and then ask it for individual resources.
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <P>
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Resource bundles in ICU4C are currently defined using text files which conform to the following
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/bnf_rb.txt">BNF definition</a>.
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * More on resource bundle concepts and syntax can be found in the
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <a href="http://icu-project.org/userguide/ResourceManagement.html">Users Guide</a>.
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <P>
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The ResourceBundle class is not suitable for subclassing.
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.0
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass U_COMMON_API ResourceBundle : public UObject {
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic:
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Constructor
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param packageName   The packageName and locale together point to an ICU udata object,
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      as defined by <code> udata_open( packageName, "res", locale, err) </code>
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      or equivalent.  Typically, packageName will refer to a (.dat) file, or to
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      a package registered with udata_setAppData(). Using a full file or directory
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      pathname for packageName is deprecated.
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param locale  This is the locale this resource bundle is for. To get resources
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                for the French locale, for example, you would create a
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                ResourceBundle passing Locale::FRENCH for the "locale" parameter,
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                and all subsequent calls to that resource bundle will return
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                resources that pertain to the French locale. If the caller doesn't
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                pass a locale parameter, the default locale for the system (as
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                returned by Locale::getDefault()) will be used.
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param err     The Error Code.
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * The UErrorCode& err parameter is used to return status information to the user. To
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * check whether the construction succeeded or not, you should check the value of
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * U_SUCCESS(err). If you wish more detailed information, you can check for
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * informational error results which still indicate success. U_USING_FALLBACK_WARNING
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * indicates that a fall back locale was used. For example, 'de_CH' was requested,
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * but nothing was found there, so 'de' was used. U_USING_DEFAULT_WARNING indicates that
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * the default locale data was used; neither the requested locale nor any of its
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * fall back locales could be found.
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(const UnicodeString&    packageName,
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                   const Locale&           locale,
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                   UErrorCode&              err);
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Construct a resource bundle for the default bundle in the specified package.
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param packageName   The packageName and locale together point to an ICU udata object,
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      as defined by <code> udata_open( packageName, "res", locale, err) </code>
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      or equivalent.  Typically, packageName will refer to a (.dat) file, or to
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      a package registered with udata_setAppData(). Using a full file or directory
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      pathname for packageName is deprecated.
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param err A UErrorCode value
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(const UnicodeString&    packageName,
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                   UErrorCode&              err);
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Construct a resource bundle for the ICU default bundle.
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param err A UErrorCode value
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(UErrorCode &err);
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Standard constructor, onstructs a resource bundle for the locale-specific
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * bundle in the specified package.
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param packageName   The packageName and locale together point to an ICU udata object,
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      as defined by <code> udata_open( packageName, "res", locale, err) </code>
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      or equivalent.  Typically, packageName will refer to a (.dat) file, or to
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      a package registered with udata_setAppData(). Using a full file or directory
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      pathname for packageName is deprecated.
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                      NULL is used to refer to ICU data.
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param locale The locale for which to open a resource bundle.
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param err A UErrorCode value
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(const char* packageName,
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                   const Locale& locale,
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                   UErrorCode& err);
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Copy constructor.
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param original The resource bundle to copy.
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(const ResourceBundle &original);
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Constructor from a C UResourceBundle. The resource bundle is
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * copied and not adopted. ures_close will still need to be used on the
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * original resource bundle.
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param res A pointer to the C resource bundle.
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status A UErrorCode value.
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(UResourceBundle *res,
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                   UErrorCode &status);
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Assignment operator.
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param other The resource bundle to copy.
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle&
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      operator=(const ResourceBundle& other);
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /** Destructor.
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    virtual ~ResourceBundle();
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Clone this object.
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Clones can be used concurrently in multiple threads.
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * If an error occurs, then NULL is returned.
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * The caller must delete the clone.
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a clone of this object
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see getDynamicClassID
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.8
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle *clone() const;
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the size of a resource. Size for scalar types is always 1, and for vector/table types is
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * the number of child resources.
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @warning Integer array is treated as a scalar type. There are no
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *          APIs to access individual members of an integer array. It
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *          is always returned as a whole.
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return number of resources in a given resource.
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getSize(void) const;
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * returns a string from a string resource type
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status  fills in the outgoing error code
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be a warning
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a pointer to a zero-terminated UChar array which lives in a memory mapped/DLL file.
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UnicodeString
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getString(UErrorCode& status) const;
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * returns a binary data from a resource. Can be used at most primitive resource types (binaries,
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * strings, ints)
226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param len     fills in the length of resulting byte chunk
228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status  fills in the outgoing error code
229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be a warning
231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a pointer to a chunk of unsigned bytes which live in a memory mapped/DLL file.
233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const uint8_t*
236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getBinary(int32_t& len, UErrorCode& status) const;
237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * returns an integer vector from a resource.
241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param len     fills in the length of resulting integer vector
243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status  fills in the outgoing error code
244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be a warning
246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a pointer to a vector of integers that lives in a memory mapped/DLL file.
248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const int32_t*
251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getIntVector(int32_t& len, UErrorCode& status) const;
252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * returns an unsigned integer from a resource.
255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * This integer is originally 28 bits.
256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status  fills in the outgoing error code
258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be a warning
260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return an unsigned integer value
262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    uint32_t
265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getUInt(UErrorCode& status) const;
266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * returns a signed integer from a resource.
269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * This integer is originally 28 bit and the sign gets propagated.
270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status  fills in the outgoing error code
272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be <TT>U_MISSING_RESOURCE_ERROR</TT> if the key is not found
273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                could be a warning
274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                e.g.: <TT>U_USING_FALLBACK_WARNING</TT>,<TT>U_USING_DEFAULT_WARNING </TT>
275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a signed integer value
276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t
279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getInt(UErrorCode& status) const;
280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Checks whether the resource has another element to iterate over.
283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return TRUE if there are more elements, FALSE if there is no more elements
285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UBool
288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      hasNext(void) const;
289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Resets the internal context of a resource so that iteration starts from the first element.
292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void
296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      resetIterator(void);
297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
299ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the key associated with this resource. Not all the resources have a key - only
300ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * those that are members of a table.
301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
302ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a key associated to this resource, or NULL if it doesn't have a key
303ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
304ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
305ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const char*
306ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getKey(void) const;
307ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
308ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
309ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Gets the locale ID of the resource bundle as a string.
310ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Same as getLocale().getName() .
311ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
312ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return the locale ID of the resource bundle as a string
313ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
314ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
315ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const char*
316ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getName(void) const;
317ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
318ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
319ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
320ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the type of a resource. Available types are defined in enum UResType
321ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
322ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return type of the given resource.
323ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
324ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
325ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UResType
326ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getType(void) const;
327ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
328ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
329ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the next resource in a given resource or NULL if there are no more resources
330ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
331ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code
332ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return                  ResourceBundle object.
333ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
334ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
335ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle
336ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getNext(UErrorCode& status);
337ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
338ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
339ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the next string in a resource or NULL if there are no more resources
340ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * to iterate over.
341ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
342ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code
343ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return an UnicodeString object.
344ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
345ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
346ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UnicodeString
347ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getNextString(UErrorCode& status);
348ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
349ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
350ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the next string in a resource or NULL if there are no more resources
351ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * to iterate over.
352ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
353ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param key               fill in for key associated with this string
354ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code
355ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return an UnicodeString object.
356ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
357ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
358ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UnicodeString
359ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getNextString(const char ** key,
360ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    UErrorCode& status);
361ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
362ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
363ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the resource in a resource at the specified index.
364ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
365ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param index             an index to the wanted resource.
366ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code
367ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return                  ResourceBundle object. If there is an error, resource is invalid.
368ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
369ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
370ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle
371ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      get(int32_t index,
372ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          UErrorCode& status) const;
373ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
374ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
375ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns the string in a given resource at the specified index.
376ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
377ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param index             an index to the wanted string.
378ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code
379ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return                  an UnicodeString object. If there is an error, string is bogus
380ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
381ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
382ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UnicodeString
383ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getStringEx(int32_t index,
384ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  UErrorCode& status) const;
385ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
386ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
387ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns a resource in a resource that has a given key. This procedure works only with table
388ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * resources.
389ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
390ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param key               a key associated with the wanted resource
391ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code.
392ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return                  ResourceBundle object. If there is an error, resource is invalid.
393ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
394ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
395ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle
396ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      get(const char* key,
397ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          UErrorCode& status) const;
398ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
399ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
400ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Returns a string in a resource that has a given key. This procedure works only with table
401ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * resources.
402ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
403ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param key               a key associated with the wanted string
404ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status            fills in the outgoing error code
405ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return                  an UnicodeString object. If there is an error, string is bogus
406ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
407ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
408ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UnicodeString
409ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getStringEx(const char* key,
410ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  UErrorCode& status) const;
411ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
41283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_HIDE_DEPRECATED_API
413ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
414ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Return the version number associated with this ResourceBundle as a string. Please
415ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * use getVersion, as this method is going to be deprecated.
416ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
417ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return  A version number string as specified in the resource bundle or its parent.
418ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *          The caller does not own this string.
419ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see getVersion
420ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @deprecated ICU 2.8 Use getVersion instead.
421ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
422ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const char*
423ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getVersionNumber(void) const;
42483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif  /* U_HIDE_DEPRECATED_API */
425ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
426ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
427ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Return the version number associated with this ResourceBundle as a UVersionInfo array.
428ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
429ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param versionInfo A UVersionInfo array that is filled with the version number
430ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *                    as specified in the resource bundle or its parent.
431ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
432ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
433ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void
434ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getVersion(UVersionInfo versionInfo) const;
435ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
43683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_HIDE_DEPRECATED_API
437ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
438ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Return the Locale associated with this ResourceBundle.
439ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
440ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a Locale object
441ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @deprecated ICU 2.8 Use getLocale(ULocDataLocaleType type, UErrorCode &status) overload instead.
442ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
443ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const Locale&
444ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getLocale(void) const;
44583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif  /* U_HIDE_DEPRECATED_API */
446ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
447ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
448ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Return the Locale associated with this ResourceBundle.
449ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param type You can choose between requested, valid and actual
450ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *             locale. For description see the definition of
451ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *             ULocDataLocaleType in uloc.h
452ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param status just for catching illegal arguments
453ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
454ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a Locale object
455ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.8
456ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
457ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    const Locale
458ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      getLocale(ULocDataLocaleType type, UErrorCode &status) const;
45983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_HIDE_INTERNAL_API
460ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
461ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * This API implements multilevel fallback
462ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @internal
463ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
464ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle
465ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        getWithFallback(const char* key, UErrorCode& status);
46683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif  /* U_HIDE_INTERNAL_API */
467ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
468ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for the actual class.
469ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
470ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.2
471ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
472ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    virtual UClassID getDynamicClassID() const;
473ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
474ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
475ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for this class.
476ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
477ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.2
478ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
479ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    static UClassID U_EXPORT2 getStaticClassID();
480ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
481ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate:
482ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ResourceBundle(); // default constructor not implemented
483ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
484ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UResourceBundle *fResource;
485ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void constructForLocale(const UnicodeString& path, const Locale& locale, UErrorCode& error);
486ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    Locale *fLocale;
487ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
488ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
489ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END
490ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
491