Coverage Report

Created: 2023-02-22 06:51

/src/icu/source/i18n/unicode/fpositer.h
Line
Count
Source (jump to first uncovered line)
1
// © 2016 and later: Unicode, Inc. and others.
2
// License & terms of use: http://www.unicode.org/copyright.html
3
/*
4
********************************************************************************
5
*   Copyright (C) 2010-2012, International Business Machines
6
*   Corporation and others.  All Rights Reserved.
7
********************************************************************************
8
*
9
* File attiter.h
10
*
11
* Modification History:
12
*
13
*   Date        Name        Description
14
*   12/15/2009  dougfelt    Created
15
********************************************************************************
16
*/
17
18
#ifndef FPOSITER_H
19
#define FPOSITER_H
20
21
#include "unicode/utypes.h"
22
23
#if U_SHOW_CPLUSPLUS_API
24
25
#include "unicode/uobject.h"
26
27
/**
28
 * \file
29
 * \brief C++ API: FieldPosition Iterator.
30
 */
31
32
#if UCONFIG_NO_FORMATTING
33
34
U_NAMESPACE_BEGIN
35
36
/*
37
 * Allow the declaration of APIs with pointers to FieldPositionIterator
38
 * even when formatting is removed from the build.
39
 */
40
class FieldPositionIterator;
41
42
U_NAMESPACE_END
43
44
#else
45
46
#include "unicode/fieldpos.h"
47
#include "unicode/umisc.h"
48
49
U_NAMESPACE_BEGIN
50
51
class UVector32;
52
53
/**
54
 * FieldPositionIterator returns the field ids and their start/limit positions generated
55
 * by a call to Format::format.  See Format, NumberFormat, DecimalFormat.
56
 * @stable ICU 4.4
57
 */
58
class U_I18N_API FieldPositionIterator : public UObject {
59
public:
60
    /**
61
     * Destructor.
62
     * @stable ICU 4.4
63
     */
64
    ~FieldPositionIterator();
65
66
    /**
67
     * Constructs a new, empty iterator.
68
     * @stable ICU 4.4
69
     */
70
    FieldPositionIterator(void);
71
72
    /**
73
     * Copy constructor.  If the copy failed for some reason, the new iterator will
74
     * be empty.
75
     * @stable ICU 4.4
76
     */
77
    FieldPositionIterator(const FieldPositionIterator&);
78
79
    /**
80
     * Return true if another object is semantically equal to this
81
     * one.
82
     * <p>
83
     * Return true if this FieldPositionIterator is at the same position in an
84
     * equal array of run values.
85
     * @stable ICU 4.4
86
     */
87
    bool operator==(const FieldPositionIterator&) const;
88
89
    /**
90
     * Returns the complement of the result of operator==
91
     * @param rhs The FieldPositionIterator to be compared for inequality
92
     * @return the complement of the result of operator==
93
     * @stable ICU 4.4
94
     */
95
0
    bool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); }
96
97
    /**
98
     * If the current position is valid, updates the FieldPosition values, advances the iterator,
99
     * and returns true, otherwise returns false.
100
     * @stable ICU 4.4
101
     */
102
    UBool next(FieldPosition& fp);
103
104
private:
105
    /**
106
     * Sets the data used by the iterator, and resets the position.
107
     * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid 
108
     * (length is not a multiple of 3, or start >= limit for any run).
109
     */
110
    void setData(UVector32 *adopt, UErrorCode& status);
111
112
    friend class FieldPositionIteratorHandler;
113
114
    UVector32 *data;
115
    int32_t pos;
116
};
117
118
U_NAMESPACE_END
119
120
#endif /* #if !UCONFIG_NO_FORMATTING */
121
122
#endif /* U_SHOW_CPLUSPLUS_API */
123
124
#endif // FPOSITER_H