aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/icu/common/rbbirb.cpp
diff options
context:
space:
mode:
authormcheshkov <mcheshkov@yandex-team.ru>2022-02-10 16:46:16 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:16 +0300
commit1312621288956f199a5bd5342b0133d4395fa725 (patch)
tree1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /contrib/libs/icu/common/rbbirb.cpp
parente9d19cec64684c9c1e6b0c98297e5b895cf904fe (diff)
downloadydb-1312621288956f199a5bd5342b0133d4395fa725.tar.gz
Restoring authorship annotation for <mcheshkov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/icu/common/rbbirb.cpp')
-rw-r--r--contrib/libs/icu/common/rbbirb.cpp220
1 files changed, 110 insertions, 110 deletions
diff --git a/contrib/libs/icu/common/rbbirb.cpp b/contrib/libs/icu/common/rbbirb.cpp
index 39b4267bc8..68ded32e1d 100644
--- a/contrib/libs/icu/common/rbbirb.cpp
+++ b/contrib/libs/icu/common/rbbirb.cpp
@@ -1,4 +1,4 @@
-// © 2016 and later: Unicode, Inc. and others.
+// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
//
// file: rbbirb.cpp
@@ -24,7 +24,7 @@
#include "unicode/uchriter.h"
#include "unicode/parsepos.h"
#include "unicode/parseerr.h"
-
+
#include "cmemory.h"
#include "cstring.h"
#include "rbbirb.h"
@@ -33,7 +33,7 @@
#include "rbbisetb.h"
#include "rbbitblb.h"
#include "rbbidata.h"
-#include "uassert.h"
+#include "uassert.h"
U_NAMESPACE_BEGIN
@@ -47,7 +47,7 @@ U_NAMESPACE_BEGIN
RBBIRuleBuilder::RBBIRuleBuilder(const UnicodeString &rules,
UParseError *parseErr,
UErrorCode &status)
- : fRules(rules), fStrippedRules(rules)
+ : fRules(rules), fStrippedRules(rules)
{
fStatus = &status; // status is checked below
fParseError = parseErr;
@@ -62,7 +62,7 @@ RBBIRuleBuilder::RBBIRuleBuilder(const UnicodeString &rules,
fSafeFwdTree = NULL;
fSafeRevTree = NULL;
fDefaultTree = &fForwardTree;
- fForwardTable = NULL;
+ fForwardTable = NULL;
fRuleStatusVals = NULL;
fChainRules = FALSE;
fLBCMNoChain = FALSE;
@@ -111,7 +111,7 @@ RBBIRuleBuilder::~RBBIRuleBuilder() {
delete fUSetNodes;
delete fSetBuilder;
- delete fForwardTable;
+ delete fForwardTable;
delete fForwardTree;
delete fReverseTree;
delete fSafeFwdTree;
@@ -140,9 +140,9 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
return NULL;
}
- // Remove whitespace from the rules to make it smaller.
- // The rule parser has already removed comments.
- fStrippedRules = fScanner->stripRules(fStrippedRules);
+ // Remove whitespace from the rules to make it smaller.
+ // The rule parser has already removed comments.
+ fStrippedRules = fScanner->stripRules(fStrippedRules);
// Calculate the size of each section in the data.
// Sizes here are padded up to a multiple of 8 for better memory alignment.
@@ -150,30 +150,30 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
// without the padding.
//
int32_t headerSize = align8(sizeof(RBBIDataHeader));
- int32_t forwardTableSize = align8(fForwardTable->getTableSize());
- int32_t reverseTableSize = align8(fForwardTable->getSafeTableSize());
+ int32_t forwardTableSize = align8(fForwardTable->getTableSize());
+ int32_t reverseTableSize = align8(fForwardTable->getSafeTableSize());
int32_t trieSize = align8(fSetBuilder->getTrieSize());
int32_t statusTableSize = align8(fRuleStatusVals->size() * sizeof(int32_t));
- int32_t rulesSize = align8((fStrippedRules.length()+1) * sizeof(UChar));
+ int32_t rulesSize = align8((fStrippedRules.length()+1) * sizeof(UChar));
- int32_t totalSize = headerSize
- + forwardTableSize
- + reverseTableSize
+ int32_t totalSize = headerSize
+ + forwardTableSize
+ + reverseTableSize
+ statusTableSize + trieSize + rulesSize;
-#ifdef RBBI_DEBUG
- if (fDebugEnv && uprv_strstr(fDebugEnv, "size")) {
- RBBIDebugPrintf("Header Size: %8d\n", headerSize);
- RBBIDebugPrintf("Forward Table Size: %8d\n", forwardTableSize);
- RBBIDebugPrintf("Reverse Table Size: %8d\n", reverseTableSize);
- RBBIDebugPrintf("Trie Size: %8d\n", trieSize);
- RBBIDebugPrintf("Status Table Size: %8d\n", statusTableSize);
- RBBIDebugPrintf("Rules Size: %8d\n", rulesSize);
- RBBIDebugPrintf("-----------------------------\n");
- RBBIDebugPrintf("Total Size: %8d\n", totalSize);
- }
-#endif
-
+#ifdef RBBI_DEBUG
+ if (fDebugEnv && uprv_strstr(fDebugEnv, "size")) {
+ RBBIDebugPrintf("Header Size: %8d\n", headerSize);
+ RBBIDebugPrintf("Forward Table Size: %8d\n", forwardTableSize);
+ RBBIDebugPrintf("Reverse Table Size: %8d\n", reverseTableSize);
+ RBBIDebugPrintf("Trie Size: %8d\n", trieSize);
+ RBBIDebugPrintf("Status Table Size: %8d\n", statusTableSize);
+ RBBIDebugPrintf("Rules Size: %8d\n", rulesSize);
+ RBBIDebugPrintf("-----------------------------\n");
+ RBBIDebugPrintf("Total Size: %8d\n", totalSize);
+ }
+#endif
+
RBBIDataHeader *data = (RBBIDataHeader *)uprv_malloc(totalSize);
if (data == NULL) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
@@ -183,30 +183,30 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
data->fMagic = 0xb1a0;
- data->fFormatVersion[0] = RBBI_DATA_FORMAT_VERSION[0];
- data->fFormatVersion[1] = RBBI_DATA_FORMAT_VERSION[1];
- data->fFormatVersion[2] = RBBI_DATA_FORMAT_VERSION[2];
- data->fFormatVersion[3] = RBBI_DATA_FORMAT_VERSION[3];
+ data->fFormatVersion[0] = RBBI_DATA_FORMAT_VERSION[0];
+ data->fFormatVersion[1] = RBBI_DATA_FORMAT_VERSION[1];
+ data->fFormatVersion[2] = RBBI_DATA_FORMAT_VERSION[2];
+ data->fFormatVersion[3] = RBBI_DATA_FORMAT_VERSION[3];
data->fLength = totalSize;
data->fCatCount = fSetBuilder->getNumCharCategories();
data->fFTable = headerSize;
data->fFTableLen = forwardTableSize;
-
- data->fRTable = data->fFTable + data->fFTableLen;
+
+ data->fRTable = data->fFTable + data->fFTableLen;
data->fRTableLen = reverseTableSize;
- data->fTrie = data->fRTable + data->fRTableLen;
+ data->fTrie = data->fRTable + data->fRTableLen;
data->fTrieLen = fSetBuilder->getTrieSize();
data->fStatusTable = data->fTrie + trieSize;
data->fStatusTableLen= statusTableSize;
data->fRuleSource = data->fStatusTable + statusTableSize;
- data->fRuleSourceLen = fStrippedRules.length() * sizeof(UChar);
+ data->fRuleSourceLen = fStrippedRules.length() * sizeof(UChar);
uprv_memset(data->fReserved, 0, sizeof(data->fReserved));
- fForwardTable->exportTable((uint8_t *)data + data->fFTable);
- fForwardTable->exportSafeTable((uint8_t *)data + data->fRTable);
+ fForwardTable->exportTable((uint8_t *)data + data->fFTable);
+ fForwardTable->exportSafeTable((uint8_t *)data + data->fRTable);
fSetBuilder->serializeTrie ((uint8_t *)data + data->fTrie);
int32_t *ruleStatusTable = (int32_t *)((uint8_t *)data + data->fStatusTable);
@@ -214,7 +214,7 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
ruleStatusTable[i] = fRuleStatusVals->elementAti(i);
}
- fStrippedRules.extract((UChar *)((uint8_t *)data+data->fRuleSource), rulesSize/2+1, *fStatus);
+ fStrippedRules.extract((UChar *)((uint8_t *)data+data->fRuleSource), rulesSize/2+1, *fStatus);
return data;
}
@@ -240,100 +240,100 @@ RBBIRuleBuilder::createRuleBasedBreakIterator( const UnicodeString &rules,
return NULL;
}
- RBBIDataHeader *data = builder.build(status);
-
- if (U_FAILURE(status)) {
- return nullptr;
- }
-
+ RBBIDataHeader *data = builder.build(status);
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
//
- // Create a break iterator from the compiled rules.
- // (Identical to creation from stored pre-compiled rules)
- //
- // status is checked after init in construction.
- RuleBasedBreakIterator *This = new RuleBasedBreakIterator(data, status);
- if (U_FAILURE(status)) {
- delete This;
- This = NULL;
- }
- else if(This == NULL) { // test for NULL
- status = U_MEMORY_ALLOCATION_ERROR;
- }
- return This;
-}
-
-RBBIDataHeader *RBBIRuleBuilder::build(UErrorCode &status) {
- if (U_FAILURE(status)) {
- return nullptr;
- }
-
- fScanner->parse();
- if (U_FAILURE(status)) {
- return nullptr;
+ // Create a break iterator from the compiled rules.
+ // (Identical to creation from stored pre-compiled rules)
+ //
+ // status is checked after init in construction.
+ RuleBasedBreakIterator *This = new RuleBasedBreakIterator(data, status);
+ if (U_FAILURE(status)) {
+ delete This;
+ This = NULL;
}
-
- //
+ else if(This == NULL) { // test for NULL
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+ return This;
+}
+
+RBBIDataHeader *RBBIRuleBuilder::build(UErrorCode &status) {
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ fScanner->parse();
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ //
// UnicodeSet processing.
// Munge the Unicode Sets to create a set of character categories.
- // Generate the mapping tables (TRIE) from input code points to
+ // Generate the mapping tables (TRIE) from input code points to
// the character categories.
//
- fSetBuilder->buildRanges();
+ fSetBuilder->buildRanges();
//
// Generate the DFA state transition table.
//
- fForwardTable = new RBBITableBuilder(this, &fForwardTree, status);
- if (fForwardTable == nullptr) {
+ fForwardTable = new RBBITableBuilder(this, &fForwardTree, status);
+ if (fForwardTable == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return nullptr;
+ return nullptr;
}
- fForwardTable->buildForwardTable();
- optimizeTables();
- fForwardTable->buildSafeReverseTable(status);
+ fForwardTable->buildForwardTable();
+ optimizeTables();
+ fForwardTable->buildSafeReverseTable(status);
+
-
#ifdef RBBI_DEBUG
- if (fDebugEnv && uprv_strstr(fDebugEnv, "states")) {
- fForwardTable->printStates();
- fForwardTable->printRuleStatusTable();
- fForwardTable->printReverseTable();
+ if (fDebugEnv && uprv_strstr(fDebugEnv, "states")) {
+ fForwardTable->printStates();
+ fForwardTable->printRuleStatusTable();
+ fForwardTable->printReverseTable();
}
#endif
- fSetBuilder->buildTrie();
-
+ fSetBuilder->buildTrie();
+
//
// Package up the compiled data into a memory image
// in the run-time format.
//
- RBBIDataHeader *data = flattenData(); // returns NULL if error
- if (U_FAILURE(status)) {
- return nullptr;
+ RBBIDataHeader *data = flattenData(); // returns NULL if error
+ if (U_FAILURE(status)) {
+ return nullptr;
}
- return data;
-}
-
-void RBBIRuleBuilder::optimizeTables() {
- bool didSomething;
- do {
- didSomething = false;
-
- // Begin looking for duplicates with char class 3.
- // Classes 0, 1 and 2 are special; they are unused, {bof} and {eof} respectively,
- // and should not have other categories merged into them.
- IntPair duplPair = {3, 0};
- while (fForwardTable->findDuplCharClassFrom(&duplPair)) {
- fSetBuilder->mergeCategories(duplPair);
- fForwardTable->removeColumn(duplPair.second);
- didSomething = true;
- }
-
- while (fForwardTable->removeDuplicateStates() > 0) {
- didSomething = true;
- }
- } while (didSomething);
+ return data;
+}
+
+void RBBIRuleBuilder::optimizeTables() {
+ bool didSomething;
+ do {
+ didSomething = false;
+
+ // Begin looking for duplicates with char class 3.
+ // Classes 0, 1 and 2 are special; they are unused, {bof} and {eof} respectively,
+ // and should not have other categories merged into them.
+ IntPair duplPair = {3, 0};
+ while (fForwardTable->findDuplCharClassFrom(&duplPair)) {
+ fSetBuilder->mergeCategories(duplPair);
+ fForwardTable->removeColumn(duplPair.second);
+ didSomething = true;
+ }
+
+ while (fForwardTable->removeDuplicateStates() > 0) {
+ didSomething = true;
+ }
+ } while (didSomething);
}
U_NAMESPACE_END