Files
UnrealEngineUWP/Engine/Source/Runtime/Core/Public/Apple
Jamie Dale 11049aa02e Added a custom icu::CharacterIterator implementation, which will attempt to interface with FText/FString as efficiently as it can based on the native platform string format.
TTP# 336464 - Editor: Finish the Multiline Editable Text Block

There are two versions of this, which are typedef'd to FICUTextCharacterIterator based on the current platform string traits.

FICUTextCharacterIterator_NativeUTF16 is used on platforms where TCHAR is already in a native UTF-16 format (as used by ICU), so performs no conversion and just passes the internal string data through to an icu::UCharCharacterIterator. Windows, Xbox One, and PS4 use this iterator.

FICUTextCharacterIterator_ConvertToUnicodeString is used on platforms where TCHAR is not in a native UTF-16 format, and performs a conversion to an icu::UnicodeString which is then passed into an icu::StringCharacterIterator - this has the same behaviour and cost as every platforms had prior to this change. OS X, iOS, Android, and Linux use this iterator.

Other changes:
- Renamed the Convert functions in ICUUtilities to either ConvertString or ConvertChar32 to make it clearer what they were doing.
- Removed the ConvertChar32 functions which were attempting to convert a UChar32 back to a TCHAR (as this is neither safe or sane).
- Added IsUnicodeEncoded to FGenericPlatformString. This is used along with the sizeof(TCHAR) at compile time to work out if the platform is using UTF-16.

ReviewedBy Justin.Sargent

[CL 2116572 by Jamie Dale in Main branch]
2014-06-25 06:42:38 -04:00
..