]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | ******************************************************************************* | |
3 | * Copyright (C) 2010-2012, International Business Machines | |
4 | * Corporation and others. All Rights Reserved. | |
5 | ******************************************************************************* | |
6 | * file name: udicttrie.h | |
7 | * encoding: US-ASCII | |
8 | * tab size: 8 (not used) | |
9 | * indentation:4 | |
10 | * | |
11 | * created on: 2010dec17 | |
12 | * created by: Markus W. Scherer | |
13 | */ | |
14 | ||
15 | #ifndef __USTRINGTRIE_H__ | |
16 | #define __USTRINGTRIE_H__ | |
17 | ||
18 | /** | |
19 | * \file | |
20 | * \brief C API: Helper definitions for dictionary trie APIs. | |
21 | */ | |
22 | ||
23 | #include "unicode/utypes.h" | |
24 | ||
25 | ||
26 | /** | |
27 | * Return values for BytesTrie::next(), UCharsTrie::next() and similar methods. | |
28 | * @see USTRINGTRIE_MATCHES | |
29 | * @see USTRINGTRIE_HAS_VALUE | |
30 | * @see USTRINGTRIE_HAS_NEXT | |
31 | * @stable ICU 4.8 | |
32 | */ | |
33 | enum UStringTrieResult { | |
34 | /** | |
35 | * The input unit(s) did not continue a matching string. | |
36 | * Once current()/next() return USTRINGTRIE_NO_MATCH, | |
37 | * all further calls to current()/next() will also return USTRINGTRIE_NO_MATCH, | |
38 | * until the trie is reset to its original state or to a saved state. | |
39 | * @stable ICU 4.8 | |
40 | */ | |
41 | USTRINGTRIE_NO_MATCH, | |
42 | /** | |
43 | * The input unit(s) continued a matching string | |
44 | * but there is no value for the string so far. | |
45 | * (It is a prefix of a longer string.) | |
46 | * @stable ICU 4.8 | |
47 | */ | |
48 | USTRINGTRIE_NO_VALUE, | |
49 | /** | |
50 | * The input unit(s) continued a matching string | |
51 | * and there is a value for the string so far. | |
52 | * This value will be returned by getValue(). | |
53 | * No further input byte/unit can continue a matching string. | |
54 | * @stable ICU 4.8 | |
55 | */ | |
56 | USTRINGTRIE_FINAL_VALUE, | |
57 | /** | |
58 | * The input unit(s) continued a matching string | |
59 | * and there is a value for the string so far. | |
60 | * This value will be returned by getValue(). | |
61 | * Another input byte/unit can continue a matching string. | |
62 | * @stable ICU 4.8 | |
63 | */ | |
64 | USTRINGTRIE_INTERMEDIATE_VALUE | |
65 | }; | |
66 | ||
67 | /** | |
68 | * Same as (result!=USTRINGTRIE_NO_MATCH). | |
69 | * @param result A result from BytesTrie::first(), UCharsTrie::next() etc. | |
70 | * @return true if the input bytes/units so far are part of a matching string/byte sequence. | |
71 | * @stable ICU 4.8 | |
72 | */ | |
73 | #define USTRINGTRIE_MATCHES(result) ((result)!=USTRINGTRIE_NO_MATCH) | |
74 | ||
75 | /** | |
76 | * Equivalent to (result==USTRINGTRIE_INTERMEDIATE_VALUE || result==USTRINGTRIE_FINAL_VALUE) but | |
77 | * this macro evaluates result exactly once. | |
78 | * @param result A result from BytesTrie::first(), UCharsTrie::next() etc. | |
79 | * @return true if there is a value for the input bytes/units so far. | |
80 | * @see BytesTrie::getValue | |
81 | * @see UCharsTrie::getValue | |
82 | * @stable ICU 4.8 | |
83 | */ | |
84 | #define USTRINGTRIE_HAS_VALUE(result) ((result)>=USTRINGTRIE_FINAL_VALUE) | |
85 | ||
86 | /** | |
87 | * Equivalent to (result==USTRINGTRIE_NO_VALUE || result==USTRINGTRIE_INTERMEDIATE_VALUE) but | |
88 | * this macro evaluates result exactly once. | |
89 | * @param result A result from BytesTrie::first(), UCharsTrie::next() etc. | |
90 | * @return true if another input byte/unit can continue a matching string. | |
91 | * @stable ICU 4.8 | |
92 | */ | |
93 | #define USTRINGTRIE_HAS_NEXT(result) ((result)&1) | |
94 | ||
95 | #endif /* __USTRINGTRIE_H__ */ |