intl/icu/source/common/unicode/unifilt.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2 **********************************************************************
     3 * Copyright (C) 1999-2010, International Business Machines Corporation and others.
     4 * All Rights Reserved.
     5 **********************************************************************
     6 *   Date        Name        Description
     7 *   11/17/99    aliu        Creation.
     8 **********************************************************************
     9 */
    10 #ifndef UNIFILT_H
    11 #define UNIFILT_H
    13 #include "unicode/unifunct.h"
    14 #include "unicode/unimatch.h"
    16 /**
    17  * \file 
    18  * \brief C++ API: Unicode Filter
    19  */
    21 U_NAMESPACE_BEGIN
    23 /**
    24  * U_ETHER is used to represent character values for positions outside
    25  * a range.  For example, transliterator uses this to represent
    26  * characters outside the range contextStart..contextLimit-1.  This
    27  * allows explicit matching by rules and UnicodeSets of text outside a
    28  * defined range.
    29  * @stable ICU 3.0
    30  */
    31 #define U_ETHER ((UChar)0xFFFF)
    33 /**
    34  *
    35  * <code>UnicodeFilter</code> defines a protocol for selecting a
    36  * subset of the full range (U+0000 to U+10FFFF) of Unicode characters.
    37  * Currently, filters are used in conjunction with classes like {@link
    38  * Transliterator} to only process selected characters through a
    39  * transformation.
    40  *
    41  * <p>Note: UnicodeFilter currently stubs out two pure virtual methods
    42  * of its base class, UnicodeMatcher.  These methods are toPattern()
    43  * and matchesIndexValue().  This is done so that filter classes that
    44  * are not actually used as matchers -- specifically, those in the
    45  * UnicodeFilterLogic component, and those in tests -- can continue to
    46  * work without defining these methods.  As long as a filter is not
    47  * used in an RBT during real transliteration, these methods will not
    48  * be called.  However, this breaks the UnicodeMatcher base class
    49  * protocol, and it is not a correct solution.
    50  *
    51  * <p>In the future we may revisit the UnicodeMatcher / UnicodeFilter
    52  * hierarchy and either redesign it, or simply remove the stubs in
    53  * UnicodeFilter and force subclasses to implement the full
    54  * UnicodeMatcher protocol.
    55  *
    56  * @see UnicodeFilterLogic
    57  * @stable ICU 2.0
    58  */
    59 class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher {
    61 public:
    62     /**
    63      * Destructor
    64      * @stable ICU 2.0
    65      */
    66     virtual ~UnicodeFilter();
    68     /**
    69      * Returns <tt>true</tt> for characters that are in the selected
    70      * subset.  In other words, if a character is <b>to be
    71      * filtered</b>, then <tt>contains()</tt> returns
    72      * <b><tt>false</tt></b>.
    73      * @stable ICU 2.0
    74      */
    75     virtual UBool contains(UChar32 c) const = 0;
    77     /**
    78      * UnicodeFunctor API.  Cast 'this' to a UnicodeMatcher* pointer
    79      * and return the pointer.
    80      * @stable ICU 2.4
    81      */
    82     virtual UnicodeMatcher* toMatcher() const;
    84     /**
    85      * Implement UnicodeMatcher API.
    86      * @stable ICU 2.4
    87      */
    88     virtual UMatchDegree matches(const Replaceable& text,
    89                                  int32_t& offset,
    90                                  int32_t limit,
    91                                  UBool incremental);
    93     /**
    94      * UnicodeFunctor API.  Nothing to do.
    95      * @stable ICU 2.4
    96      */
    97     virtual void setData(const TransliterationRuleData*);
    99     /**
   100      * ICU "poor man's RTTI", returns a UClassID for this class.
   101      *
   102      * @stable ICU 2.2
   103      */
   104     static UClassID U_EXPORT2 getStaticClassID();
   106 protected:
   108     /*
   109      * Since this class has pure virtual functions,
   110      * a constructor can't be used.
   111      * @stable ICU 2.0
   112      */
   113 /*    UnicodeFilter();*/
   114 };
   116 /*inline UnicodeFilter::UnicodeFilter() {}*/
   118 U_NAMESPACE_END
   120 #endif

mercurial