OLD | NEW |
1 // Copyright (C) 2016 and later: Unicode, Inc. and others. | 1 // Copyright (C) 2016 and later: Unicode, Inc. and others. |
2 // License & terms of use: http://www.unicode.org/copyright.html | 2 // License & terms of use: http://www.unicode.org/copyright.html |
3 /* | 3 /* |
4 *************************************************************************** | 4 *************************************************************************** |
5 * Copyright (C) 2008-2015, International Business Machines Corporation | 5 * Copyright (C) 2008-2015, International Business Machines Corporation |
6 * and others. All Rights Reserved. | 6 * and others. All Rights Reserved. |
7 *************************************************************************** | 7 *************************************************************************** |
8 * file name: uspoof.cpp | 8 * file name: uspoof.cpp |
9 * encoding: US-ASCII | 9 * encoding: US-ASCII |
10 * tab size: 8 (not used) | 10 * tab size: 8 (not used) |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 uspoof_getSkeletonUnicodeString(const USpoofChecker *sc, | 639 uspoof_getSkeletonUnicodeString(const USpoofChecker *sc, |
640 uint32_t /*type*/, | 640 uint32_t /*type*/, |
641 const UnicodeString &id, | 641 const UnicodeString &id, |
642 UnicodeString &dest, | 642 UnicodeString &dest, |
643 UErrorCode *status) { | 643 UErrorCode *status) { |
644 const SpoofImpl *This = SpoofImpl::validateThis(sc, *status); | 644 const SpoofImpl *This = SpoofImpl::validateThis(sc, *status); |
645 if (U_FAILURE(*status)) { | 645 if (U_FAILURE(*status)) { |
646 return dest; | 646 return dest; |
647 } | 647 } |
648 | 648 |
649 // Check that at least one of the CONFUSABLE flags is turned on. If not, | |
650 // return an error. | |
651 if ((This->fChecks & USPOOF_CONFUSABLE) == 0) { | |
652 *status = U_ILLEGAL_ARGUMENT_ERROR; | |
653 return dest; | |
654 } | |
655 | |
656 UnicodeString nfdId; | 649 UnicodeString nfdId; |
657 gNfdNormalizer->normalize(id, nfdId, *status); | 650 gNfdNormalizer->normalize(id, nfdId, *status); |
658 | 651 |
659 // Apply the skeleton mapping to the NFD normalized input string | 652 // Apply the skeleton mapping to the NFD normalized input string |
660 // Accumulate the skeleton, possibly unnormalized, in a UnicodeString. | 653 // Accumulate the skeleton, possibly unnormalized, in a UnicodeString. |
661 int32_t inputIndex = 0; | 654 int32_t inputIndex = 0; |
662 UnicodeString skelStr; | 655 UnicodeString skelStr; |
663 int32_t normalizedLen = nfdId.length(); | 656 int32_t normalizedLen = nfdId.length(); |
664 for (inputIndex=0; inputIndex < normalizedLen; ) { | 657 for (inputIndex=0; inputIndex < normalizedLen; ) { |
665 UChar32 c = nfdId.char32At(inputIndex); | 658 UChar32 c = nfdId.char32At(inputIndex); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 U_CAPI const USet* U_EXPORT2 | 767 U_CAPI const USet* U_EXPORT2 |
775 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *
status) { | 768 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *
status) { |
776 const CheckResult* This = CheckResult::validateThis(checkResult, *status); | 769 const CheckResult* This = CheckResult::validateThis(checkResult, *status); |
777 if (U_FAILURE(*status)) { return NULL; } | 770 if (U_FAILURE(*status)) { return NULL; } |
778 return This->fNumerics.toUSet(); | 771 return This->fNumerics.toUSet(); |
779 } | 772 } |
780 | 773 |
781 | 774 |
782 | 775 |
783 #endif // !UCONFIG_NO_NORMALIZATION | 776 #endif // !UCONFIG_NO_NORMALIZATION |
OLD | NEW |