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