~ubuntu-branches/ubuntu/trusty/mozjs24/trusty-proposed

« back to all changes in this revision

Viewing changes to intl/icu/source/i18n/fphdlimp.h

  • Committer: Package Import Robot
  • Author(s): Tim Lunn
  • Date: 2014-02-11 21:55:34 UTC
  • Revision ID: package-import@ubuntu.com-20140211215534-m1zyq5aj59md3y07
Tags: upstream-24.2.0
ImportĀ upstreamĀ versionĀ 24.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
17
U_NAMESPACE_BEGIN
 
18
 
 
19
// utility FieldPositionHandler
 
20
// base class, null implementation
 
21
 
 
22
class 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
 
 
33
class 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
 
 
48
class 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
 
 
69
U_NAMESPACE_END
 
70
 
 
71
#endif /* !UCONFIG_NO_FORMATTING */
 
72
 
 
73
#endif /* FPHDLIMP_H */