395463d7a7
X-SVN-Rev: 41159
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
// © 2018 and later: Unicode, Inc. and others.
|
|
// License & terms of use: http://www.unicode.org/copyright.html
|
|
|
|
#include "unicode/utypes.h"
|
|
|
|
#if !UCONFIG_NO_FORMATTING
|
|
#ifndef __SOURCE_FIELDPOSUTIL_H__
|
|
#define __SOURCE_FIELDPOSUTIL_H__
|
|
|
|
U_NAMESPACE_BEGIN
|
|
|
|
/**
|
|
* Wraps a UFieldPosition and makes it usable as a FieldPosition. Example:
|
|
*
|
|
* <pre>
|
|
* UFieldPositionWrapper wrapper(myUFPos);
|
|
* u_favorite_function_taking_ufpos(wrapper);
|
|
* // when destructed, the wrapper saves the data back into myUFPos
|
|
* </pre>
|
|
*/
|
|
class UFieldPositionWrapper : public UMemory {
|
|
public:
|
|
explicit UFieldPositionWrapper(UFieldPosition& ufpos)
|
|
: _ufpos(ufpos) {
|
|
_fpos.setField(_ufpos.field);
|
|
_fpos.setBeginIndex(_ufpos.beginIndex);
|
|
_fpos.setEndIndex(_ufpos.endIndex);
|
|
}
|
|
|
|
/** When destructed, copies the information from the fpos into the ufpos. */
|
|
~UFieldPositionWrapper() {
|
|
_ufpos.field = _fpos.getField();
|
|
_ufpos.beginIndex = _fpos.getBeginIndex();
|
|
_ufpos.endIndex = _fpos.getEndIndex();
|
|
}
|
|
|
|
/** Conversion operator to FieldPosition */
|
|
operator FieldPosition&() {
|
|
return _fpos;
|
|
}
|
|
|
|
private:
|
|
FieldPosition _fpos;
|
|
UFieldPosition& _ufpos;
|
|
};
|
|
|
|
U_NAMESPACE_END
|
|
|
|
#endif //__SOURCE_FIELDPOSUTIL_H__
|
|
#endif /* #if !UCONFIG_NO_FORMATTING */
|