00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00022 #ifndef USPOOF_H
00023 #define USPOOF_H
00024
00025 #include "unicode/utypes.h"
00026 #include "unicode/uset.h"
00027 #include "unicode/parseerr.h"
00028 #include "unicode/localpointer.h"
00029
00030 #if !UCONFIG_NO_NORMALIZATION
00031
00032
00033 #if U_SHOW_CPLUSPLUS_API
00034 #include "unicode/unistr.h"
00035 #include "unicode/uniset.h"
00036
00037 U_NAMESPACE_USE
00038 #endif
00039
00040
00151 struct USpoofChecker;
00152 typedef struct USpoofChecker USpoofChecker;
00161 typedef enum USpoofChecks {
00167 USPOOF_SINGLE_SCRIPT_CONFUSABLE = 1,
00168
00177 USPOOF_MIXED_SCRIPT_CONFUSABLE = 2,
00178
00188 USPOOF_WHOLE_SCRIPT_CONFUSABLE = 4,
00189
00196 USPOOF_ANY_CASE = 8,
00197
00202 USPOOF_SINGLE_SCRIPT = 16,
00203
00210 USPOOF_INVISIBLE = 32,
00211
00216 USPOOF_CHAR_LIMIT = 64,
00217
00218 USPOOF_ALL_CHECKS = 0x7f
00219 } USpoofChecks;
00220
00221
00232 U_STABLE USpoofChecker * U_EXPORT2
00233 uspoof_open(UErrorCode *status);
00234
00235
00257 U_CAPI USpoofChecker * U_EXPORT2
00258 uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
00259 UErrorCode *pErrorCode);
00260
00292 U_CAPI USpoofChecker * U_EXPORT2
00293 uspoof_openFromSource(const char *confusables, int32_t confusablesLen,
00294 const char *confusablesWholeScript, int32_t confusablesWholeScriptLen,
00295 int32_t *errType, UParseError *pe, UErrorCode *status);
00296
00297
00303 U_STABLE void U_EXPORT2
00304 uspoof_close(USpoofChecker *sc);
00305
00306 #if U_SHOW_CPLUSPLUS_API
00307
00308 U_NAMESPACE_BEGIN
00309
00319 U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckerPointer, USpoofChecker, uspoof_close);
00320
00321 U_NAMESPACE_END
00322
00323 #endif
00324
00334 U_STABLE USpoofChecker * U_EXPORT2
00335 uspoof_clone(const USpoofChecker *sc, UErrorCode *status);
00336
00337
00350 U_STABLE void U_EXPORT2
00351 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status);
00352
00364 U_STABLE int32_t U_EXPORT2
00365 uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status);
00366
00409 U_STABLE void U_EXPORT2
00410 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status);
00411
00433 U_STABLE const char * U_EXPORT2
00434 uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status);
00435
00436
00455 U_STABLE void U_EXPORT2
00456 uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status);
00457
00458
00479 U_STABLE const USet * U_EXPORT2
00480 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status);
00481
00482
00483 #if U_SHOW_CPLUSPLUS_API
00484
00502 U_STABLE void U_EXPORT2
00503 uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const UnicodeSet *chars, UErrorCode *status);
00504
00505
00526 U_STABLE const UnicodeSet * U_EXPORT2
00527 uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
00528 #endif
00529
00530
00559 U_STABLE int32_t U_EXPORT2
00560 uspoof_check(const USpoofChecker *sc,
00561 const UChar *text, int32_t length,
00562 int32_t *position,
00563 UErrorCode *status);
00564
00565
00594 U_STABLE int32_t U_EXPORT2
00595 uspoof_checkUTF8(const USpoofChecker *sc,
00596 const char *text, int32_t length,
00597 int32_t *position,
00598 UErrorCode *status);
00599
00600
00601 #if U_SHOW_CPLUSPLUS_API
00602
00627 U_STABLE int32_t U_EXPORT2
00628 uspoof_checkUnicodeString(const USpoofChecker *sc,
00629 const U_NAMESPACE_QUALIFIER UnicodeString &text,
00630 int32_t *position,
00631 UErrorCode *status);
00632
00633 #endif
00634
00635
00675 U_STABLE int32_t U_EXPORT2
00676 uspoof_areConfusable(const USpoofChecker *sc,
00677 const UChar *s1, int32_t length1,
00678 const UChar *s2, int32_t length2,
00679 UErrorCode *status);
00680
00681
00682
00708 U_STABLE int32_t U_EXPORT2
00709 uspoof_areConfusableUTF8(const USpoofChecker *sc,
00710 const char *s1, int32_t length1,
00711 const char *s2, int32_t length2,
00712 UErrorCode *status);
00713
00714
00715
00716
00717 #if U_SHOW_CPLUSPLUS_API
00718
00739 U_STABLE int32_t U_EXPORT2
00740 uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
00741 const U_NAMESPACE_QUALIFIER UnicodeString &s1,
00742 const U_NAMESPACE_QUALIFIER UnicodeString &s2,
00743 UErrorCode *status);
00744 #endif
00745
00746
00779 U_STABLE int32_t U_EXPORT2
00780 uspoof_getSkeleton(const USpoofChecker *sc,
00781 uint32_t type,
00782 const UChar *s, int32_t length,
00783 UChar *dest, int32_t destCapacity,
00784 UErrorCode *status);
00785
00821 U_STABLE int32_t U_EXPORT2
00822 uspoof_getSkeletonUTF8(const USpoofChecker *sc,
00823 uint32_t type,
00824 const char *s, int32_t length,
00825 char *dest, int32_t destCapacity,
00826 UErrorCode *status);
00827
00828 #if U_SHOW_CPLUSPLUS_API
00829
00857 U_STABLE UnicodeString & U_EXPORT2
00858 uspoof_getSkeletonUnicodeString(const USpoofChecker *sc,
00859 uint32_t type,
00860 const UnicodeString &s,
00861 UnicodeString &dest,
00862 UErrorCode *status);
00863 #endif
00864
00865
00884 U_CAPI int32_t U_EXPORT2
00885 uspoof_serialize(USpoofChecker *sc,
00886 void *data, int32_t capacity,
00887 UErrorCode *status);
00888
00889
00890 #endif
00891
00892 #endif