diff options
Diffstat (limited to 'Build/source/libs/icu/icu-4.8.1/i18n/fphdlimp.h')
-rw-r--r-- | Build/source/libs/icu/icu-4.8.1/i18n/fphdlimp.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.8.1/i18n/fphdlimp.h b/Build/source/libs/icu/icu-4.8.1/i18n/fphdlimp.h new file mode 100644 index 00000000000..cd5c314a888 --- /dev/null +++ b/Build/source/libs/icu/icu-4.8.1/i18n/fphdlimp.h @@ -0,0 +1,73 @@ +/* +******************************************************************************* +* Copyright (C) 2009-2010, International Business Machines Corporation and * +* others. All Rights Reserved. * +******************************************************************************* +*/ + +#ifndef FPHDLIMP_H +#define FPHDLIMP_H + +#if !UCONFIG_NO_FORMATTING + +#include "unicode/utypes.h" +#include "unicode/fieldpos.h" +#include "unicode/fpositer.h" + +U_NAMESPACE_BEGIN + +// utility FieldPositionHandler +// base class, null implementation + +class FieldPositionHandler: public UMemory { + public: + virtual ~FieldPositionHandler(); + virtual void addAttribute(int32_t id, int32_t start, int32_t limit); + virtual void shiftLast(int32_t delta); + virtual UBool isRecording(void); +}; + + +// utility subclass FieldPositionOnlyHandler + +class FieldPositionOnlyHandler : public FieldPositionHandler { + FieldPosition& pos; + + public: + FieldPositionOnlyHandler(FieldPosition& pos); + virtual ~FieldPositionOnlyHandler(); + + virtual void addAttribute(int32_t id, int32_t start, int32_t limit); + virtual void shiftLast(int32_t delta); + virtual UBool isRecording(void); +}; + + +// utility subclass FieldPositionIteratorHandler + +class FieldPositionIteratorHandler : public FieldPositionHandler { + FieldPositionIterator* iter; // can be NULL + UVector32* vec; + UErrorCode status; + + // Note, we keep a reference to status, so if status is on the stack, we have + // to be destroyed before status goes out of scope. Easiest thing is to + // allocate us on the stack in the same (or narrower) scope as status has. + // This attempts to encourage that by blocking heap allocation. + void *operator new(size_t s); + void *operator new[](size_t s); + + public: + FieldPositionIteratorHandler(FieldPositionIterator* posIter, UErrorCode& status); + ~FieldPositionIteratorHandler(); + + virtual void addAttribute(int32_t id, int32_t start, int32_t limit); + virtual void shiftLast(int32_t delta); + virtual UBool isRecording(void); +}; + +U_NAMESPACE_END + +#endif /* !UCONFIG_NO_FORMATTING */ + +#endif /* FPHDLIMP_H */ |