]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/fphdlimp.h
ICU-461.18.tar.gz
[apple/icu.git] / icuSources / i18n / fphdlimp.h
CommitLineData
729e4ab9
A
1/*
2*******************************************************************************
3* Copyright (C) 2009-2010, International Business Machines Corporation and *
4* others. All Rights Reserved. *
5*******************************************************************************
6*/
7
8#ifndef FPHDLIMP_H
9#define FPHDLIMP_H
10
11#if !UCONFIG_NO_FORMATTING
12
13#include "unicode/utypes.h"
14#include "unicode/fieldpos.h"
15#include "unicode/fpositer.h"
16
17U_NAMESPACE_BEGIN
18
19// utility FieldPositionHandler
20// base class, null implementation
21
22class FieldPositionHandler: public UMemory {
23 public:
24 virtual ~FieldPositionHandler();
25 virtual void addAttribute(int32_t id, int32_t start, int32_t limit);
26 virtual void shiftLast(int32_t delta);
27 virtual UBool isRecording(void);
28};
29
30
31// utility subclass FieldPositionOnlyHandler
32
33class FieldPositionOnlyHandler : public FieldPositionHandler {
34 FieldPosition& pos;
35
36 public:
37 FieldPositionOnlyHandler(FieldPosition& pos);
38 virtual ~FieldPositionOnlyHandler();
39
40 virtual void addAttribute(int32_t id, int32_t start, int32_t limit);
41 virtual void shiftLast(int32_t delta);
42 virtual UBool isRecording(void);
43};
44
45
46// utility subclass FieldPositionIteratorHandler
47
48class FieldPositionIteratorHandler : public FieldPositionHandler {
49 FieldPositionIterator* iter; // can be NULL
50 UVector32* vec;
51 UErrorCode status;
52
53 // Note, we keep a reference to status, so if status is on the stack, we have
54 // to be destroyed before status goes out of scope. Easiest thing is to
55 // allocate us on the stack in the same (or narrower) scope as status has.
56 // This attempts to encourage that by blocking heap allocation.
57 void *operator new(size_t s);
58 void *operator new[](size_t s);
59
60 public:
61 FieldPositionIteratorHandler(FieldPositionIterator* posIter, UErrorCode& status);
62 ~FieldPositionIteratorHandler();
63
64 virtual void addAttribute(int32_t id, int32_t start, int32_t limit);
65 virtual void shiftLast(int32_t delta);
66 virtual UBool isRecording(void);
67};
68
69U_NAMESPACE_END
70
71#endif /* !UCONFIG_NO_FORMATTING */
72
73#endif /* FPHDLIMP_H */