You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.0 KiB
125 lines
3.0 KiB
// © 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"
|
|
|
|
#if U_SHOW_CPLUSPLUS_API
|
|
|
|
#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;
|
|
|
|
/**
|
|
* 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;
|
|
|
|
UVector32 *data;
|
|
int32_t pos;
|
|
};
|
|
|
|
U_NAMESPACE_END
|
|
|
|
#endif /* #if !UCONFIG_NO_FORMATTING */
|
|
|
|
#endif /* U_SHOW_CPLUSPLUS_API */
|
|
|
|
#endif // FPOSITER_H
|