fpositer.h revision c73f511526464f8e56c242df80552e9b0d94ae3d
143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis/* 243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis******************************************************************************** 343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* Copyright (C) 2010-2012, International Business Machines 443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* Corporation and others. All Rights Reserved. 543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis******************************************************************************** 643dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* 743dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* File attiter.h 843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* 943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* Modification History: 1043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* 1143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* Date Name Description 1243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis* 12/15/2009 dougfelt Created 1343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis******************************************************************************** 1443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis*/ 15ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek 16769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis#ifndef FPOSITER_H 17d1e5a89226da79f7e6f43d40facc46abda9e5245Jordy Rose#define FPOSITER_H 18769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis 199fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis#include "unicode/utypes.h" 2043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "unicode/uobject.h" 2143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 2243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis/** 2343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis * \file 24d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis * \brief C++ API: FieldPosition Iterator. 25d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis */ 26d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis 27d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis#if UCONFIG_NO_FORMATTING 28d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis 29d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios KyrtzidisU_NAMESPACE_BEGIN 30d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis 31d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis/* 32d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis * Allow the declaration of APIs with pointers to FieldPositionIterator 33d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis * even when formatting is removed from the build. 34d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis */ 35d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidisclass FieldPositionIterator; 36d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis 37dff6ef903ff4fcb43b5ea292ecd772e381393b5dAnna ZaksU_NAMESPACE_END 38dff6ef903ff4fcb43b5ea292ecd772e381393b5dAnna Zaks 39d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis#else 40d655ab28fdf7c940d3f79f8f287954d7f76e0977Argyrios Kyrtzidis 41deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis#include "unicode/fieldpos.h" 42deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis#include "unicode/umisc.h" 43deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis 44deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios KyrtzidisU_NAMESPACE_BEGIN 45deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis 46deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidisclass UVector32; 47deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis 48deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis/** 49deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis * FieldPositionIterator returns the field ids and their start/limit positions generated 50deb6447d0029bdb122397fafb5fa2a4e76f2e555Argyrios Kyrtzidis * by a call to Format::format. See Format, NumberFormat, DecimalFormat. 51769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * @stable ICU 4.4 52769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis */ 53769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidisclass U_I18N_API FieldPositionIterator : public UObject { 54769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidispublic: 559fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis /** 569fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * Destructor. 579fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * @stable ICU 4.4 589fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis */ 599fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis ~FieldPositionIterator(); 609fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis 619fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis /** 629fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * Constructs a new, empty iterator. 639fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * @stable ICU 4.4 649fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis */ 659fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis FieldPositionIterator(void); 669fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis 679fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis /** 689fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * Copy constructor. If the copy failed for some reason, the new iterator will 699fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * be empty. 70769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * @stable ICU 4.4 719fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis */ 729fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis FieldPositionIterator(const FieldPositionIterator&); 739fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis 749fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis /** 759fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * Return true if another object is semantically equal to this 76769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * one. 77769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * <p> 789fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * Return true if this FieldPositionIterator is at the same position in an 799fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * equal array of run values. 809fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis * @stable ICU 4.4 819fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis */ 829fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis UBool operator==(const FieldPositionIterator&) const; 839fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis 84769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis /** 85769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * Returns the complement of the result of operator== 86769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * @param rhs The FieldPositionIterator to be compared for inequality 87769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * @return the complement of the result of operator== 88769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * @stable ICU 4.4 89769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis */ 90769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis UBool operator!=(const FieldPositionIterator& rhs) const { return !operator==(rhs); } 91769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis 92769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis /** 93c2e0db82139c70c0eac9d5c165b6bf3250af5bedArgyrios Kyrtzidis * If the current position is valid, updates the FieldPosition values, advances the iterator, 94c2e0db82139c70c0eac9d5c165b6bf3250af5bedArgyrios Kyrtzidis * and returns TRUE, otherwise returns FALSE. 95cd50e136ad7dc721822f5e6350769a37c216612dArgyrios Kyrtzidis * @stable ICU 4.4 968ff5c41f2bde7ebbe568b4c15e59f14b8befae66Anna Zaks */ 978ff5c41f2bde7ebbe568b4c15e59f14b8befae66Anna Zaks UBool next(FieldPosition& fp); 988ff5c41f2bde7ebbe568b4c15e59f14b8befae66Anna Zaks 99769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidisprivate: 100e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis friend class FieldPositionIteratorHandler; 101e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis 102e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis /** 103769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * Sets the data used by the iterator, and resets the position. 104769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * Returns U_ILLEGAL_ARGUMENT_ERROR in status if the data is not valid 105769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis * (length is not a multiple of 3, or start >= limit for any run). 106769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis */ 107cd50e136ad7dc721822f5e6350769a37c216612dArgyrios Kyrtzidis void setData(UVector32 *adopt, UErrorCode& status); 108cd50e136ad7dc721822f5e6350769a37c216612dArgyrios Kyrtzidis 109769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis UVector32 *data; 110e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis int32_t pos; 111769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis}; 112769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis 113769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios KyrtzidisU_NAMESPACE_END 114769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis 115cd50e136ad7dc721822f5e6350769a37c216612dArgyrios Kyrtzidis#endif /* #if !UCONFIG_NO_FORMATTING */ 116769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis 117769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis#endif // FPOSITER_H 118769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis