X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/46f4442e9a5a4f3b98b7c1083586332f6a8a99a4..38fbf2fd31f5cd99b500914d6037b1d06b608645:/icuSources/i18n/unicode/translit.h
diff --git a/icuSources/i18n/unicode/translit.h b/icuSources/i18n/unicode/translit.h
index bfff3447..4830da82 100644
--- a/icuSources/i18n/unicode/translit.h
+++ b/icuSources/i18n/unicode/translit.h
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
/*
**********************************************************************
-* Copyright (C) 1999-2008, International Business Machines
+* Copyright (C) 1999-2014, International Business Machines
* Corporation and others. All Rights Reserved.
**********************************************************************
* Date Name Description
@@ -25,6 +27,7 @@
#include "unicode/utrans.h" // UTransPosition, UTransDirection
#include "unicode/strenum.h"
+#if U_SHOW_CPLUSPLUS_API
U_NAMESPACE_BEGIN
class UnicodeFilter;
@@ -277,6 +280,7 @@ private:
void* pointer;
};
+#ifndef U_HIDE_INTERNAL_API
/**
* Return a token containing an integer.
* @return a token containing an integer.
@@ -290,6 +294,7 @@ private:
* @internal
*/
inline static Token pointerToken(void*);
+#endif /* U_HIDE_INTERNAL_API */
/**
* A function that creates and returns a Transliterator. When
@@ -472,13 +477,10 @@ public:
* Transliterates the portion of the text buffer that can be
* transliterated unambiguosly after a new character has been
* inserted, typically as a result of a keyboard event. This is a
- * convenience method; see {@link
- * #transliterate(Replaceable&, UTransPosition&, const UnicodeString&, UErrorCode&) const}
- * for details.
+ * convenience method.
* @param text the buffer holding transliterated and
* untransliterated text
- * @param index an array of three integers. See {@link
- * #transliterate(Replaceable&, UTransPosition&, const UnicodeString&, UErrorCode&) const }.
+ * @param index an array of three integers.
* @param insertion text to be inserted and possibly
* transliterated into the translation buffer at
* index.limit
.
@@ -498,8 +500,7 @@ public:
* for details.
* @param text the buffer holding transliterated and
* untransliterated text
- * @param index an array of three integers. See {@link
- * #transliterate(Replaceable&, UTransPosition&, const UnicodeString&, UErrorCode&) const }.
+ * @param index an array of three integers. See {@link #transliterate(Replaceable&, UTransPosition&, const UnicodeString*, UErrorCode&) const }.
* @param status Output param to filled in with a success or an error.
* @see #transliterate(Replaceable, int[], String)
* @stable ICU 2.0
@@ -655,7 +656,7 @@ private:
*
*
If this transliterator has a filter, break up the input text into runs
* of unfiltered characters. Pass each run to
- * In incremental mode, if rollback is TRUE, perform a special
* incremental procedure in which several passes are made over the input
@@ -967,6 +968,11 @@ public:
/**
* Registers a factory function that creates transliterators of
* a given ID.
+ *
+ * Because ICU may choose to cache Transliterators internally, this must
+ * be called at application startup, prior to any calls to
+ * Transliterator::createXXX to avoid undefined behavior.
+ *
* @param id the ID being registered
* @param factory a function pointer that will be copied and
* called later when the given ID is passed to createInstance()
@@ -989,6 +995,10 @@ public:
* After this call the Transliterator class owns the adoptedObj
* and will delete it.
*
+ * Because ICU may choose to cache Transliterators internally, this must
+ * be called at application startup, prior to any calls to
+ * Transliterator::createXXX to avoid undefined behavior.
+ *
* @param adoptedObj an instance of subclass of
* Transliterator
that defines clone()
* @see #createInstance
@@ -1017,14 +1027,15 @@ public:
protected:
+#ifndef U_HIDE_INTERNAL_API
/**
- * @internal
* @param id the ID being registered
* @param factory a function pointer that will be copied and
* called later when the given ID is passed to createInstance()
* @param context a context pointer that will be stored and
* later passed to the factory function when an ID matching
* the registration ID is being instantiated with this factory.
+ * @internal
*/
static void _registerFactory(const UnicodeString& id,
Factory factory,
@@ -1076,6 +1087,7 @@ protected:
static void _registerSpecialInverse(const UnicodeString& target,
const UnicodeString& inverseTarget,
UBool bidirectional);
+#endif /* U_HIDE_INTERNAL_API */
public:
@@ -1085,6 +1097,10 @@ public:
* Any attempt to construct an unregistered transliterator based
* on its ID will fail.
*
+ * Because ICU may choose to cache Transliterators internally, this should
+ * be called during application shutdown, after all calls to
+ * Transliterator::createXXX to avoid undefined behavior.
+ *
* @param ID the ID of the transliterator or class
* @return the Object
that was registered with
* ID
, or null
if none was
@@ -1181,6 +1197,7 @@ public:
protected:
+#ifndef U_HIDE_INTERNAL_API
/**
* Non-mutexed internal method
* @internal
@@ -1223,6 +1240,7 @@ protected:
const UnicodeString& source,
const UnicodeString& target,
UnicodeString& result);
+#endif /* U_HIDE_INTERNAL_API */
protected:
@@ -1269,6 +1287,7 @@ private:
static UBool initializeRegistry(UErrorCode &status);
public:
+#ifndef U_HIDE_OBSOLETE_API
/**
* Return the number of IDs currently registered with the system.
* To retrieve the actual IDs, call getAvailableID(i) with
@@ -1291,6 +1310,7 @@ public:
* may become invalid if another thread calls unregister
*/
static const UnicodeString& U_EXPORT2 getAvailableID(int32_t index);
+#endif /* U_HIDE_OBSOLETE_API */
};
inline int32_t Transliterator::getMaximumContextLength(void) const {
@@ -1300,10 +1320,11 @@ inline int32_t Transliterator::getMaximumContextLength(void) const {
inline void Transliterator::setID(const UnicodeString& id) {
ID = id;
// NUL-terminate the ID string, which is a non-aliased copy.
- ID.append((UChar)0);
+ ID.append((char16_t)0);
ID.truncate(ID.length()-1);
}
+#ifndef U_HIDE_INTERNAL_API
inline Transliterator::Token Transliterator::integerToken(int32_t i) {
Token t;
t.integer = i;
@@ -1315,8 +1336,10 @@ inline Transliterator::Token Transliterator::pointerToken(void* p) {
t.pointer = p;
return t;
}
+#endif /* U_HIDE_INTERNAL_API */
U_NAMESPACE_END
+#endif // U_SHOW_CPLUSPLUS_API
#endif /* #if !UCONFIG_NO_TRANSLITERATION */