~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/icu/source/common/unicode/unifilt.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
12
 
 
13
 
#include "unicode/unifunct.h"
14
 
#include "unicode/unimatch.h"
15
 
 
16
 
/**
17
 
 * \file 
18
 
 * \brief C++ API: Unicode Filter
19
 
 */
20
 
 
21
 
U_NAMESPACE_BEGIN
22
 
 
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)
32
 
 
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 {
60
 
 
61
 
public:
62
 
    /**
63
 
     * Destructor
64
 
     * @stable ICU 2.0
65
 
     */
66
 
    virtual ~UnicodeFilter();
67
 
 
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;
76
 
 
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;
83
 
 
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);
92
 
 
93
 
    /**
94
 
     * UnicodeFunctor API.  Nothing to do.
95
 
     * @stable ICU 2.4
96
 
     */
97
 
    virtual void setData(const TransliterationRuleData*);
98
 
 
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();
105
 
 
106
 
protected:
107
 
 
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
 
};
115
 
 
116
 
/*inline UnicodeFilter::UnicodeFilter() {}*/
117
 
 
118
 
U_NAMESPACE_END
119
 
 
120
 
#endif