Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: icu46/source/i18n/bms.cpp

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/i18n/basictz.cpp ('k') | icu46/source/i18n/bmsearch.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: icu46/source/i18n/bms.cpp
===================================================================
--- icu46/source/i18n/bms.cpp (revision 0)
+++ icu46/source/i18n/bms.cpp (revision 0)
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008-2009, International Business Machines Corporation and Others.
+ * All rights reserved.
+ */
+
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "unicode/bms.h"
+#include "unicode/unistr.h"
+#include "unicode/colldata.h"
+#include "unicode/bmsearch.h"
+
+
+#if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION
+
+
+//#define USE_SAFE_CASTS
+#ifdef USE_SAFE_CASTS
+#define STATIC_CAST(type,value) static_cast<type>(value)
+#define CONST_CAST(type,value) const_cast<type>(value)
+#else
+#define STATIC_CAST(type,value) (type) (value)
+#define CONST_CAST(type,value) (type) (value)
+#endif
+
+U_NAMESPACE_USE
+
+U_CAPI UCD * U_EXPORT2
+ucd_open(UCollator *coll, UErrorCode *status)
+{
+ return STATIC_CAST(UCD *, CollData::open(coll, *status));
+}
+
+U_CAPI void U_EXPORT2
+ucd_close(UCD *ucd)
+{
+ CollData *data = STATIC_CAST(CollData *, ucd);
+
+ CollData::close(data);
+}
+
+U_CAPI UCollator * U_EXPORT2
+ucd_getCollator(UCD *ucd)
+{
+ CollData *data = STATIC_CAST(CollData *, ucd);
+
+ return data->getCollator();
+}
+
+U_CAPI void U_EXPORT2
+ucd_freeCache()
+{
+ CollData::freeCollDataCache();
+}
+
+U_CAPI void U_EXPORT2
+ucd_flushCache()
+{
+ CollData::flushCollDataCache();
+}
+
+struct BMS
+{
+ BoyerMooreSearch *bms;
+ const UnicodeString *targetString;
+};
+
+U_CAPI BMS * U_EXPORT2
+bms_open(UCD *ucd,
+ const UChar *pattern, int32_t patternLength,
+ const UChar *target, int32_t targetLength,
+ UErrorCode *status)
+{
+ BMS *bms = STATIC_CAST(BMS *, uprv_malloc(sizeof(BMS)));
+
+ if (bms == NULL) {
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ return NULL;
+ }
+
+ CollData *data = (CollData *) ucd;
+ UnicodeString patternString(pattern, patternLength);
+
+ if (target != NULL) {
+ bms->targetString = new UnicodeString(target, targetLength);
+
+ if (bms->targetString == NULL) {
+ bms->bms = NULL;
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ return bms;
+ }
+ } else {
+ bms->targetString = NULL;
+ }
+
+ bms->bms = new BoyerMooreSearch(data, patternString, bms->targetString, *status);
+
+ if (bms->bms == NULL) {
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ }
+
+ return bms;
+}
+
+U_CAPI void U_EXPORT2
+bms_close(BMS *bms)
+{
+ delete bms->bms;
+
+ delete bms->targetString;
+
+ uprv_free(bms);
+}
+
+U_CAPI UBool U_EXPORT2
+bms_empty(BMS *bms)
+{
+ return bms->bms->empty();
+}
+
+U_CAPI UCD * U_EXPORT2
+bms_getData(BMS *bms)
+{
+ return STATIC_CAST(UCD *, bms->bms->getData());
+}
+
+U_CAPI UBool U_EXPORT2
+bms_search(BMS *bms, int32_t offset, int32_t *start, int32_t *end)
+{
+ return bms->bms->search(offset, *start, *end);
+}
+
+U_CAPI void U_EXPORT2
+bms_setTargetString(BMS *bms, const UChar *target, int32_t targetLength, UErrorCode *status)
+{
+ if (U_FAILURE(*status)) {
+ return;
+ }
+
+ if (bms->targetString != NULL) {
+ delete bms->targetString;
+ }
+
+ if (target != NULL) {
+ bms->targetString = new UnicodeString(target, targetLength);
+ } else {
+ bms->targetString = NULL;
+ }
+
+ bms->bms->setTargetString(bms->targetString, *status);
+}
+
+#endif
Property changes on: icu46/source/i18n/bms.cpp
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « icu46/source/i18n/basictz.cpp ('k') | icu46/source/i18n/bmsearch.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698