X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/73c04bcfe1096173b00431f0cdc742894b15eef0..ef6cf650f4a75c3f97de06b51fa104f2069b9ea2:/icuSources/test/letest/letsutil.cpp?ds=sidebyside diff --git a/icuSources/test/letest/letsutil.cpp b/icuSources/test/letest/letsutil.cpp index edac65ac..0c642281 100644 --- a/icuSources/test/letest/letsutil.cpp +++ b/icuSources/test/letest/letsutil.cpp @@ -1,7 +1,7 @@ /* ******************************************************************************* * - * Copyright (C) 1999-2006, International Business Machines + * Copyright (C) 1999-2014, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -20,7 +20,9 @@ #include "layout/LayoutEngine.h" #include "layout/LELanguages.h" +#ifndef USING_ICULEHB #include "OpenTypeLayoutEngine.h" +#endif #include "letest.h" #include "letsutil.h" @@ -43,6 +45,17 @@ char *getCString(const UnicodeString *uString) return cString; } +char *getCString(const LEUnicode16 *uChars) +{ + if (uChars == NULL) { + return NULL; + } + + const UnicodeString ustring(uChars); + + return getCString(&ustring); +} + char *getUTF8String(const UnicodeString *uString) { if (uString == NULL) { @@ -67,16 +80,20 @@ void freeCString(char *cString) le_bool getRTL(const UnicodeString &text) { - UBiDiLevel paraLevel; + UBiDiLevel level = 0; UErrorCode status = U_ZERO_ERROR; le_int32 charCount = text.length(); + le_int32 limit = -1; UBiDi *ubidi = ubidi_openSized(charCount, 0, &status); ubidi_setPara(ubidi, text.getBuffer(), charCount, UBIDI_DEFAULT_LTR, NULL, &status); - paraLevel = ubidi_getParaLevel(ubidi); + + // TODO: Should check that there's only a single logical run... + ubidi_getLogicalRun(ubidi, 0, &limit, &level); + ubidi_close(ubidi); - return paraLevel & 1; + return level & 1; } le_int32 getLanguageCode(const char *lang) @@ -87,11 +104,13 @@ le_int32 getLanguageCode(const char *lang) LETag langTag = (LETag) ((lang[0] << 24) + (lang[1] << 16) + (lang[2] << 8) + 0x20); +#ifndef USING_ICULEHB for (le_int32 i = 0; i < languageCodeCount; i += 1) { if (langTag == OpenTypeLayoutEngine::languageTags[i]) { return i; } } +#endif return -1; }