intl/icu/source/i18n/fphdlimp.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/intl/icu/source/i18n/fphdlimp.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,73 @@
     1.4 +/*
     1.5 +*******************************************************************************
     1.6 +* Copyright (C) 2009-2010, International Business Machines Corporation and    *
     1.7 +* others. All Rights Reserved.                                                *
     1.8 +*******************************************************************************
     1.9 +*/
    1.10 +
    1.11 +#ifndef FPHDLIMP_H
    1.12 +#define FPHDLIMP_H
    1.13 +
    1.14 +#if !UCONFIG_NO_FORMATTING
    1.15 +
    1.16 +#include "unicode/utypes.h"
    1.17 +#include "unicode/fieldpos.h"
    1.18 +#include "unicode/fpositer.h"
    1.19 +
    1.20 +U_NAMESPACE_BEGIN
    1.21 +
    1.22 +// utility FieldPositionHandler
    1.23 +// base class, null implementation
    1.24 +
    1.25 +class FieldPositionHandler: public UMemory {
    1.26 + public:
    1.27 +  virtual ~FieldPositionHandler();
    1.28 +  virtual void addAttribute(int32_t id, int32_t start, int32_t limit);
    1.29 +  virtual void shiftLast(int32_t delta);
    1.30 +  virtual UBool isRecording(void);
    1.31 +};
    1.32 +
    1.33 +
    1.34 +// utility subclass FieldPositionOnlyHandler
    1.35 +
    1.36 +class FieldPositionOnlyHandler : public FieldPositionHandler {
    1.37 +  FieldPosition& pos;
    1.38 +
    1.39 + public:
    1.40 +  FieldPositionOnlyHandler(FieldPosition& pos);
    1.41 +  virtual ~FieldPositionOnlyHandler();
    1.42 +
    1.43 +  virtual void addAttribute(int32_t id, int32_t start, int32_t limit);
    1.44 +  virtual void shiftLast(int32_t delta);
    1.45 +  virtual UBool isRecording(void);
    1.46 +};
    1.47 +
    1.48 +
    1.49 +// utility subclass FieldPositionIteratorHandler
    1.50 +
    1.51 +class FieldPositionIteratorHandler : public FieldPositionHandler {
    1.52 +  FieldPositionIterator* iter; // can be NULL
    1.53 +  UVector32* vec;
    1.54 +  UErrorCode status;
    1.55 +
    1.56 +  // Note, we keep a reference to status, so if status is on the stack, we have
    1.57 +  // to be destroyed before status goes out of scope.  Easiest thing is to
    1.58 +  // allocate us on the stack in the same (or narrower) scope as status has.
    1.59 +  // This attempts to encourage that by blocking heap allocation.
    1.60 +  void *operator new(size_t s);
    1.61 +  void *operator new[](size_t s);
    1.62 +
    1.63 + public:
    1.64 +  FieldPositionIteratorHandler(FieldPositionIterator* posIter, UErrorCode& status);
    1.65 +  ~FieldPositionIteratorHandler();
    1.66 +
    1.67 +  virtual void addAttribute(int32_t id, int32_t start, int32_t limit);
    1.68 +  virtual void shiftLast(int32_t delta);
    1.69 +  virtual UBool isRecording(void);
    1.70 +};
    1.71 +
    1.72 +U_NAMESPACE_END
    1.73 +
    1.74 +#endif /* !UCONFIG_NO_FORMATTING */
    1.75 +
    1.76 +#endif /* FPHDLIMP_H */

mercurial