mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-11-26 02:42:23 -05:00
128 lines
3.1 KiB
C
128 lines
3.1 KiB
C
|
// © 2016 and later: Unicode, Inc. and others.
|
||
|
// License & terms of use: http://www.unicode.org/copyright.html
|
||
|
/*
|
||
|
********************************************************************************
|
||
|
* Copyright (C) 2010-2012, International Business Machines
|
||
|
* Corporation and others. All Rights Reserved.
|
||
|
********************************************************************************
|
||
|
*
|
||
|
* File attiter.h
|
||
|
*
|
||
|
* Modification History:
|
||
|
*
|
||
|
* Date Name Description
|
||
|
* 12/15/2009 dougfelt Created
|
||
|
********************************************************************************
|
||
|
*/
|
||
|
|
||
|
#ifndef FPOSITER_H
|
||
|
#define FPOSITER_H
|
||
|
|
||
|
#include "unicode/utypes.h"
|
||
|
#include "unicode/uobject.h"
|
||
|
|
||
|
/**
|
||
|
* \file
|
||
|
* \brief C++ API: FieldPosition Iterator.
|
||
|
*/
|
||
|
|
||
|
#if UCONFIG_NO_FORMATTING
|
||
|
|
||
|
U_NAMESPACE_BEGIN
|
||
|
|
||
|
/*
|
||
|
* Allow the declaration of APIs with pointers to FieldPositionIterator
|
||
|
* even when formatting is removed from the build.
|
||
|
*/
|
||
|
class FieldPositionIterator;
|
||
|
|
||
|
U_NAMESPACE_END
|
||
|
|
||
|
#else
|
||
|
|
||
|
#include "unicode/fieldpos.h"
|
||
|
#include "unicode/umisc.h"
|
||
|
|
||
|
U_NAMESPACE_BEGIN
|
||
|
|
||
|
class UVector32;
|
||
|
|
||
|
// Forward declaration for number formatting:
|
||
|
namespace number {
|
||
|
namespace impl {
|
||
|
class NumberStringBuilder;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* FieldPositionIterator returns the field ids and their start/limit positions generated
|
||
|
* by a call to Format::format. See Format, NumberFormat, DecimalFormat.
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
class U_I18N_API FieldPositionIterator : public UObject {
|
||
|
public:
|
||
|
/**
|
||
|
* Destructor.
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
~FieldPositionIterator();
|
||
|
|
||
|
/**
|
||
|
* Constructs a new, empty iterator.
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
FieldPositionIterator(void);
|
||
|
|
||
|
/**
|
||
|
* Copy constructor. If the copy failed for some reason, the new iterator will
|
||
|
* be empty.
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
FieldPositionIterator(const FieldPositionIterator&);
|
||
|
|
||
|
/**
|
||
|
* Return true if another object is semantically equal to this
|
||
|
* one.
|
||
|
* <p>
|
||
|
* Return true if this FieldPositionIterator is at the same position in an
|
||
|
* equal array of run values.
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
UBool operator==(const FieldPositionIterator&) const;
|
||
|
|
||
|
/**
|
||
|
* Returns the complement of the result of operator==
|
||
|
* @param rhs The FieldPositionIterator to be compared for inequality
|
||
|
* @return the complement of the result of operator==
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
UBool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); }
|
||
|
|
||
|
/**
|
||
|
* If the current position is valid, updates the FieldPosition values, advances the iterator,
|
||
|
* and returns TRUE, otherwise returns FALSE.
|
||
|
* @stable ICU 4.4
|
||
|
*/
|
||
|
UBool next(FieldPosition& fp);
|
||
|
|
||
|
private:
|
||
|
/**
|
||
|
* Sets the data used by the iterator, and resets the position.
|
||
|
* Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid
|
||
|
* (length is not a multiple of 3, or start >= limit for any run).
|
||
|
*/
|
||
|
void setData(UVector32 *adopt, UErrorCode& status);
|
||
|
|
||
|
friend class FieldPositionIteratorHandler;
|
||
|
friend class number::impl::NumberStringBuilder;
|
||
|
|
||
|
UVector32 *data;
|
||
|
int32_t pos;
|
||
|
};
|
||
|
|
||
|
U_NAMESPACE_END
|
||
|
|
||
|
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||
|
|
||
|
#endif // FPOSITER_H
|