1b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/* 2b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho******************************************************************************* 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (C) 2010-2011, 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 25b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/** 26b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Return values for BytesTrie::next(), UCharsTrie::next() and similar methods. 27b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @see USTRINGTRIE_MATCHES 28b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @see USTRINGTRIE_HAS_VALUE 29b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @see USTRINGTRIE_HAS_NEXT 30b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 31b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 32b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoenum UStringTrieResult { 33b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 34b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * The input unit(s) did not continue a matching string. 35b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Once current()/next() return USTRINGTRIE_NO_MATCH, 36b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * all further calls to current()/next() will also return USTRINGTRIE_NO_MATCH, 37b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * until the trie is reset to its original state or to a saved state. 38b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 39b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 40b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho USTRINGTRIE_NO_MATCH, 41b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 42b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * The input unit(s) continued a matching string 43b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * but there is no value for the string so far. 44b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * (It is a prefix of a longer string.) 45b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 46b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 47b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho USTRINGTRIE_NO_VALUE, 48b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 49b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * The input unit(s) continued a matching string 50b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * and there is a value for the string so far. 51b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * This value will be returned by getValue(). 52b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * No further input byte/unit can continue a matching string. 53b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 54b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 55b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho USTRINGTRIE_FINAL_VALUE, 56b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 57b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * The input unit(s) continued a matching string 58b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * and there is a value for the string so far. 59b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * This value will be returned by getValue(). 60b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Another input byte/unit can continue a matching string. 61b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 62b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 63b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho USTRINGTRIE_INTERMEDIATE_VALUE 64b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}; 65b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 66b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/** 67b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Same as (result!=USTRINGTRIE_NO_MATCH). 68b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param result A result from BytesTrie::first(), UCharsTrie::next() etc. 69b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return true if the input bytes/units so far are part of a matching string/byte sequence. 70b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 71b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 72b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#define USTRINGTRIE_MATCHES(result) ((result)!=USTRINGTRIE_NO_MATCH) 73b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 74b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/** 75b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Equivalent to (result==USTRINGTRIE_INTERMEDIATE_VALUE || result==USTRINGTRIE_FINAL_VALUE) but 76b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * this macro evaluates result exactly once. 77b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param result A result from BytesTrie::first(), UCharsTrie::next() etc. 78b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return true if there is a value for the input bytes/units so far. 79b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @see BytesTrie::getValue 80b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @see UCharsTrie::getValue 81b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 82b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 83b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#define USTRINGTRIE_HAS_VALUE(result) ((result)>=USTRINGTRIE_FINAL_VALUE) 84b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 85b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/** 86b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Equivalent to (result==USTRINGTRIE_NO_VALUE || result==USTRINGTRIE_INTERMEDIATE_VALUE) but 87b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * this macro evaluates result exactly once. 88b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param result A result from BytesTrie::first(), UCharsTrie::next() etc. 89b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return true if another input byte/unit can continue a matching string. 90b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @draft ICU 4.8 91b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 92b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#define USTRINGTRIE_HAS_NEXT(result) ((result)&1) 93b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 94b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#endif /* __USTRINGTRIE_H__ */ 95