Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/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
#include "unicode/uobject.h"
23
24
/**
25
 * \file
26
 * \brief C++ API: FieldPosition Iterator.
27
 */
28
29
#if UCONFIG_NO_FORMATTING
30
31
U_NAMESPACE_BEGIN
32
33
/*
34
 * Allow the declaration of APIs with pointers to FieldPositionIterator
35
 * even when formatting is removed from the build.
36
 */
37
class FieldPositionIterator;
38
39
U_NAMESPACE_END
40
41
#else
42
43
#include "unicode/fieldpos.h"
44
#include "unicode/umisc.h"
45
46
U_NAMESPACE_BEGIN
47
48
class UVector32;
49
50
/**
51
 * FieldPositionIterator returns the field ids and their start/limit positions generated
52
 * by a call to Format::format.  See Format, NumberFormat, DecimalFormat.
53
 * @stable ICU 4.4
54
 */
55
class U_I18N_API FieldPositionIterator : public UObject {
56
public:
57
    /**
58
     * Destructor.
59
     * @stable ICU 4.4
60
     */
61
    ~FieldPositionIterator();
62
63
    /**
64
     * Constructs a new, empty iterator.
65
     * @stable ICU 4.4
66
     */
67
    FieldPositionIterator(void);
68
69
    /**
70
     * Copy constructor.  If the copy failed for some reason, the new iterator will
71
     * be empty.
72
     * @stable ICU 4.4
73
     */
74
    FieldPositionIterator(const FieldPositionIterator&);
75
76
    /**
77
     * Return true if another object is semantically equal to this
78
     * one.
79
     * <p>
80
     * Return true if this FieldPositionIterator is at the same position in an
81
     * equal array of run values.
82
     * @stable ICU 4.4
83
     */
84
    UBool operator==(const FieldPositionIterator&) const;
85
86
    /**
87
     * Returns the complement of the result of operator==
88
     * @param rhs The FieldPositionIterator to be compared for inequality
89
     * @return the complement of the result of operator==
90
     * @stable ICU 4.4
91
     */
92
0
    UBool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); }
93
94
    /**
95
     * If the current position is valid, updates the FieldPosition values, advances the iterator,
96
     * and returns TRUE, otherwise returns FALSE.
97
     * @stable ICU 4.4
98
     */
99
    UBool next(FieldPosition& fp);
100
101
private:
102
    /**
103
     * Sets the data used by the iterator, and resets the position.
104
     * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid 
105
     * (length is not a multiple of 3, or start >= limit for any run).
106
     */
107
    void setData(UVector32 *adopt, UErrorCode& status);
108
109
    friend class FieldPositionIteratorHandler;
110
111
    UVector32 *data;
112
    int32_t pos;
113
};
114
115
U_NAMESPACE_END
116
117
#endif /* #if !UCONFIG_NO_FORMATTING */
118
119
#endif // FPOSITER_H