1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************************
3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   Copyright (C) 1997-2006, International Business Machines
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   Corporation and others.  All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************************
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * File FIELDPOS.H
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Modification History:
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   Date        Name        Description
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   02/25/97    aliu        Converted from java.
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   03/17/97    clhuang     Updated per Format implementation.
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *    07/17/98    stephen        Added default/copy ctors, and operators =, ==, !=
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************************
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// *****************************************************************************
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// This file was generated from the java source file FieldPosition.java
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// *****************************************************************************
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef FIELDPOS_H
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define FIELDPOS_H
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \brief C++ API: FieldPosition identifies the fields in a formatted output.
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uobject.h"
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>FieldPosition</code> is a simple class used by <code>Format</code>
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and its subclasses to identify fields in formatted output. Fields are
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * identified by constants, whose names typically end with <code>_FIELD</code>,
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * defined in the various subclasses of <code>Format</code>. See
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>ERA_FIELD</code> and its friends in <code>DateFormat</code> for
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * an example.
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>FieldPosition</code> keeps track of the position of the
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * field within the formatted output with two indices: the index
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * of the first character of the field and the index of the last
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * character of the field.
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * One version of the <code>format</code> method in the various
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>Format</code> classes requires a <code>FieldPosition</code>
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * object as an argument. You use this <code>format</code> method
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * to perform partial formatting or to get information about the
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * formatted output (such as the position of a field).
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The FieldPosition class is not suitable for subclassing.
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Below is an example of using <code>FieldPosition</code> to aid
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * alignment of an array of formatted floating-point numbers on
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * their decimal points:
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <pre>
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \code
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       double doubleNum[] = {123456789.0, -12345678.9, 1234567.89, -123456.789,
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *                  12345.6789, -1234.56789, 123.456789, -12.3456789, 1.23456789};
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       int dNumSize = (int)(sizeof(doubleNum)/sizeof(double));
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       UErrorCode status = U_ZERO_ERROR;
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       DecimalFormat* fmt = (DecimalFormat*) NumberFormat::createInstance(status);
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       fmt->setDecimalSeparatorAlwaysShown(true);
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       const int tempLen = 20;
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       char temp[tempLen];
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       for (int i=0; i<dNumSize; i++) {
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           FieldPosition pos(NumberFormat::INTEGER_FIELD);
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           UnicodeString buf;
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           char fmtText[tempLen];
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           ToCharString(fmt->format(doubleNum[i], buf, pos), fmtText);
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           for (int j=0; j<tempLen; j++) temp[j] = ' '; // clear with spaces
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           temp[__min(tempLen, tempLen-pos.getEndIndex())] = '\0';
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           cout << temp << fmtText   << endl;
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       }
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *       delete fmt;
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \endcode
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </pre>
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The code will generate the following output:
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <pre>
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \code
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           123,456,789.000
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *           -12,345,678.900
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *             1,234,567.880
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *              -123,456.789
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *                12,345.678
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *                -1,234.567
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *                   123.456
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *                   -12.345
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *                     1.234
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *  \endcode
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </pre>
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass U_I18N_API FieldPosition : public UObject {
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic:
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * DONT_CARE may be specified as the field to indicate that the
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * caller doesn't need to specify a field.  Do not subclass.
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    enum { DONT_CARE = -1 };
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Creates a FieldPosition object with a non-specified field.
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    FieldPosition()
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        : UObject(), fField(DONT_CARE), fBeginIndex(0), fEndIndex(0) {}
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Creates a FieldPosition object for the given field.  Fields are
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * identified by constants, whose names typically end with _FIELD,
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * in the various subclasses of Format.
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see NumberFormat#INTEGER_FIELD
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see NumberFormat#FRACTION_FIELD
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see DateFormat#YEAR_FIELD
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see DateFormat#MONTH_FIELD
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    FieldPosition(int32_t field)
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        : UObject(), fField(field), fBeginIndex(0), fEndIndex(0) {}
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Copy constructor
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param copy the object to be copied from.
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    FieldPosition(const FieldPosition& copy)
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        : UObject(copy), fField(copy.fField), fBeginIndex(copy.fBeginIndex), fEndIndex(copy.fEndIndex) {}
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Destructor
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    virtual ~FieldPosition();
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Assignment operator
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param copy the object to be copied from.
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    FieldPosition&      operator=(const FieldPosition& copy);
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Equality operator.
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param that    the object to be compared with.
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return        TRUE if the two field positions are equal, FALSE otherwise.
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UBool              operator==(const FieldPosition& that) const;
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Equality operator.
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param that    the object to be compared with.
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return        TRUE if the two field positions are not equal, FALSE otherwise.
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UBool              operator!=(const FieldPosition& that) const;
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Clone this object.
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Clones can be used concurrently in multiple threads.
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * If an error occurs, then NULL is returned.
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * The caller must delete the clone.
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return a clone of this object
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @see getDynamicClassID
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.8
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    FieldPosition *clone() const;
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Retrieve the field identifier.
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return    the field identifier.
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t getField(void) const { return fField; }
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Retrieve the index of the first character in the requested field.
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return    the index of the first character in the requested field.
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t getBeginIndex(void) const { return fBeginIndex; }
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Retrieve the index of the character following the last character in the
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * requested field.
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @return    the index of the character following the last character in the
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *            requested field.
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t getEndIndex(void) const { return fEndIndex; }
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Set the field.
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param f    the new value of the field.
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void setField(int32_t f) { fField = f; }
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Set the begin index.  For use by subclasses of Format.
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param bi    the new value of the begin index
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void setBeginIndex(int32_t bi) { fBeginIndex = bi; }
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Set the end index.  For use by subclasses of Format.
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @param ei    the new value of the end index
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.0
226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void setEndIndex(int32_t ei) { fEndIndex = ei; }
228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for the actual class.
231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.2
233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    virtual UClassID getDynamicClassID() const;
235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for this class.
238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.2
240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    static UClassID U_EXPORT2 getStaticClassID();
242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate:
244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Input: Desired field to determine start and end offsets for.
246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * The meaning depends on the subclass of Format.
247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t fField;
249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Output: Start offset of field in text.
252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * If the field does not occur in the text, 0 is returned.
253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t fBeginIndex;
255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Output: End offset of field in text.
258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * If the field does not occur in the text, 0 is returned.
259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t fEndIndex;
261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruinline FieldPosition&
264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruFieldPosition::operator=(const FieldPosition& copy)
265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fField         = copy.fField;
267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fEndIndex     = copy.fEndIndex;
268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    fBeginIndex = copy.fBeginIndex;
269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return *this;
270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruinline UBool
273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruFieldPosition::operator==(const FieldPosition& copy) const
274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return (fField == copy.fField &&
276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fEndIndex == copy.fEndIndex &&
277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru        fBeginIndex == copy.fBeginIndex);
278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruinline UBool
281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruFieldPosition::operator!=(const FieldPosition& copy) const
282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return !operator==(copy);
284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END
287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif // _FIELDPOS
291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru//eof
292