summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.6/common/unorm_it.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/common/unorm_it.h')
-rw-r--r--Build/source/libs/icu/icu-4.6/common/unorm_it.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/common/unorm_it.h b/Build/source/libs/icu/icu-4.6/common/unorm_it.h
new file mode 100644
index 00000000000..384b7d4469e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/common/unorm_it.h
@@ -0,0 +1,148 @@
+/*
+*******************************************************************************
+*
+* Copyright (C) 2003, International Business Machines
+* Corporation and others. All Rights Reserved.
+*
+*******************************************************************************
+* file name: unorm_it.h
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2003jan21
+* created by: Markus W. Scherer
+*/
+
+#ifndef __UNORM_IT_H__
+#define __UNORM_IT_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_COLLATION && !UCONFIG_NO_NORMALIZATION
+
+#include "unicode/uiter.h"
+#include "unicode/unorm.h"
+
+/**
+ * Normalizing UCharIterator wrapper.
+ * This internal API basically duplicates the functionality of the C++ Normalizer
+ * but
+ * - it actually implements a character iterator (UCharIterator)
+ * with few restrictions (see unorm_setIter())
+ * - it supports UCharIterator getState()/setState()
+ * - it uses lower-level APIs and buffers more text and states,
+ * hopefully resulting in higher performance
+ *
+ * Usage example:
+ * \code
+ * function(UCharIterator *srcIter) {
+ * UNormIterator *uni;
+ * UCharIterator *iter;
+ * UErrorCode errorCode;
+ *
+ * errorCode=U_ZERO_ERROR;
+ * uni=unorm_openIter(&errorCode);
+ * if(U_FAILURE(errorCode)) {
+ * // report error
+ * return;
+ * }
+ *
+ * iter=unorm_setIter(uni, srcIter, UNORM_FCD, &errorCode);
+ * if(U_FAILURE(errorCode)) {
+ * // report error
+ * } else {
+ * // use iter to iterate over the canonically ordered
+ * // version of srcIter's text
+ * uint32_t state;
+ *
+ * ...
+ *
+ * state=uiter_getState(iter);
+ * if(state!=UITER_NO_STATE) {
+ * // use valid state, store it, use iter some more
+ * ...
+ *
+ * // later restore iter to the saved state:
+ * uiter_setState(iter, state, &errorCode);
+ *
+ * ...
+ * }
+ *
+ * ...
+ * }
+ * unorm_closeIter(uni);
+ * }
+ * \endcode
+ *
+ * See also the ICU test suites.
+ *
+ * @internal
+ */
+struct UNormIterator;
+typedef struct UNormIterator UNormIterator;
+
+/**
+ * Size of a stack buffer to hold a UNormIterator, see the stackMem parameter
+ * of unorm_openIter().
+ *
+ * @internal
+ */
+#define UNORM_ITER_SIZE 1024
+
+/**
+ * Open a normalizing iterator. Must be closed later.
+ * Use unorm_setIter().
+ *
+ * @param stackMem Pointer to preallocated (stack-allocated) buffer to hold
+ * the UNormIterator if possible; can be NULL.
+ * @param stackMemSize Number of bytes at stackMem; can be 0,
+ * or should be >= UNORM_ITER_SIZE for a non-NULL stackMem.
+ * @param pErrorCode ICU error code
+ * @return an allocated and pre-initialized UNormIterator
+ * @internal
+ */
+U_CAPI UNormIterator * U_EXPORT2
+unorm_openIter(void *stackMem, int32_t stackMemSize, UErrorCode *pErrorCode);
+
+/**
+ * Close a normalizing iterator.
+ *
+ * @param uni UNormIterator from unorm_openIter()
+ * @internal
+ */
+U_CAPI void U_EXPORT2
+unorm_closeIter(UNormIterator *uni);
+
+/**
+ * Set a UCharIterator and a normalization mode for the normalizing iterator
+ * to wrap. The normalizing iterator will read from the character iterator,
+ * normalize the text, and in turn deliver it with its own wrapper UCharIterator
+ * interface which it returns.
+ *
+ * The source iterator remains at its current position through the unorm_setIter()
+ * call but will be used and moved as soon as the
+ * the returned normalizing iterator is.
+ *
+ * The returned interface pointer is valid for as long as the normalizing iterator
+ * is open and until another unorm_setIter() call is made on it.
+ *
+ * The normalizing iterator's UCharIterator interface has the following properties:
+ * - getIndex() and move() will almost always return UITER_UNKNOWN_INDEX
+ * - getState() will return UITER_NO_STATE for unknown states for positions
+ * that are not at normalization boundaries
+ *
+ * @param uni UNormIterator from unorm_openIter()
+ * @param iter The source text UCharIterator to be wrapped. It is aliases into the normalizing iterator.
+ * Must support getState() and setState().
+ * @param mode The normalization mode.
+ * @param pErrorCode ICU error code
+ * @return an alias to the normalizing iterator's UCharIterator interface
+ * @internal
+ */
+U_CAPI UCharIterator * U_EXPORT2
+unorm_setIter(UNormIterator *uni, UCharIterator *iter, UNormalizationMode mode, UErrorCode *pErrorCode);
+
+#endif /* uconfig.h switches */
+
+#endif