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