diff options
Diffstat (limited to 'Build/source/libs/icu/icu-4.8.1/i18n/uspoof_build.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-4.8.1/i18n/uspoof_build.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.8.1/i18n/uspoof_build.cpp b/Build/source/libs/icu/icu-4.8.1/i18n/uspoof_build.cpp new file mode 100644 index 00000000000..681282e0a89 --- /dev/null +++ b/Build/source/libs/icu/icu-4.8.1/i18n/uspoof_build.cpp @@ -0,0 +1,85 @@ +/* + *************************************************************************** + * Copyright (C) 2008-2009, International Business Machines Corporation + * and others. All Rights Reserved. + *************************************************************************** + * file name: uspoof_build.cpp + * encoding: US-ASCII + * tab size: 8 (not used) + * indentation:4 + * + * created on: 2008 Dec 8 + * created by: Andy Heninger + * + * Unicode Spoof Detection Data Builder + * Builder-related functions are kept in separate files so that applications not needing + * the builder can more easily exclude them, typically by means of static linking. + * + * There are three relatively independent sets of Spoof data, + * Confusables, + * Whole Script Confusables + * ID character extensions. + * + * The data tables for each are built separately, each from its own definitions + */ + +#include "unicode/utypes.h" +#include "unicode/uspoof.h" +#include "unicode/unorm.h" +#include "unicode/uregex.h" +#include "unicode/ustring.h" +#include "cmemory.h" +#include "uspoof_impl.h" +#include "uhash.h" +#include "uvector.h" +#include "uassert.h" +#include "uarrsort.h" +#include "uspoof_conf.h" +#include "uspoof_wsconf.h" + +#if !UCONFIG_NO_NORMALIZATION + +U_NAMESPACE_USE + + +// The main data building function + +U_CAPI USpoofChecker * U_EXPORT2 +uspoof_openFromSource(const char *confusables, int32_t confusablesLen, + const char *confusablesWholeScript, int32_t confusablesWholeScriptLen, + int32_t *errorType, UParseError *pe, UErrorCode *status) { + + if (U_FAILURE(*status)) { + return NULL; + } +#if UCONFIG_NO_REGULAR_EXPRESSIONS + *status = U_UNSUPPORTED_ERROR; + return NULL; +#else + if (errorType!=NULL) { + *errorType = 0; + } + if (pe != NULL) { + pe->line = 0; + pe->offset = 0; + pe->preContext[0] = 0; + pe->postContext[0] = 0; + } + + // Set up a shell of a spoof detector, with empty data. + SpoofData *newSpoofData = new SpoofData(*status); + SpoofImpl *This = new SpoofImpl(newSpoofData, *status); + + // Compile the binary data from the source (text) format. + ConfusabledataBuilder::buildConfusableData(This, confusables, confusablesLen, errorType, pe, *status); + buildWSConfusableData(This, confusablesWholeScript, confusablesWholeScriptLen, pe, *status); + + if (U_FAILURE(*status)) { + delete This; + This = NULL; + } + return (USpoofChecker *)This; +#endif // UCONFIG_NO_REGULAR_EXPRESSIONS +} + +#endif |