本文整理汇总了C++中Transliterator::getDynamicClassID方法的典型用法代码示例。如果您正苦于以下问题:C++ Transliterator::getDynamicClassID方法的具体用法?C++ Transliterator::getDynamicClassID怎么用?C++ Transliterator::getDynamicClassID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transliterator
的用法示例。
在下文中一共展示了Transliterator::getDynamicClassID方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: callEverything
void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) {
Transliterator *clonedTR = tr->clone();
CEASSERT(clonedTR != NULL);
int32_t maxcl = tr->getMaximumContextLength();
CEASSERT(clonedTR->getMaximumContextLength() == maxcl);
UnicodeString id;
UnicodeString clonedId;
id = tr->getID();
clonedId = clonedTR->getID();
CEASSERT(id == clonedId);
const UnicodeFilter *filter = tr->getFilter();
const UnicodeFilter *clonedFilter = clonedTR->getFilter();
if (filter == NULL || clonedFilter == NULL) {
// If one filter is NULL they better both be NULL.
CEASSERT(filter == clonedFilter);
} else {
CEASSERT(filter != clonedFilter);
}
UnicodeString rules;
UnicodeString clonedRules;
rules = tr->toRules(rules, FALSE);
clonedRules = clonedTR->toRules(clonedRules, FALSE);
CEASSERT(rules == clonedRules);
UnicodeSet sourceSet;
UnicodeSet clonedSourceSet;
tr->getSourceSet(sourceSet);
clonedTR->getSourceSet(clonedSourceSet);
CEASSERT(clonedSourceSet == sourceSet);
UnicodeSet targetSet;
UnicodeSet clonedTargetSet;
tr->getTargetSet(targetSet);
clonedTR->getTargetSet(clonedTargetSet);
CEASSERT(targetSet == clonedTargetSet);
UClassID classID = tr->getDynamicClassID();
CEASSERT(classID == clonedTR->getDynamicClassID());
CEASSERT(classID != 0);
delete clonedTR;
}
示例2: parser
Transliterator* U_EXPORT2
Transliterator::createFromRules(const UnicodeString& ID,
const UnicodeString& rules,
UTransDirection dir,
UParseError& parseError,
UErrorCode& status)
{
Transliterator* t = NULL;
TransliteratorParser parser(status);
parser.parse(rules, dir, parseError, status);
if (U_FAILURE(status)) {
return 0;
}
// NOTE: The logic here matches that in TransliteratorRegistry.
if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 0) {
t = new NullTransliterator();
}
else if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 1) {
t = new RuleBasedTransliterator(ID, (TransliterationRuleData*)parser.dataVector.orphanElementAt(0), TRUE);
}
else if (parser.idBlockVector.size() == 1 && parser.dataVector.size() == 0) {
// idBlock, no data -- this is an alias. The ID has
// been munged from reverse into forward mode, if
// necessary, so instantiate the ID in the forward
// direction.
if (parser.compoundFilter != NULL) {
UnicodeString filterPattern;
parser.compoundFilter->toPattern(filterPattern, FALSE);
t = createInstance(filterPattern + UnicodeString(ID_DELIM)
+ *((UnicodeString*)parser.idBlockVector.elementAt(0)), UTRANS_FORWARD, parseError, status);
}
else
t = createInstance(*((UnicodeString*)parser.idBlockVector.elementAt(0)), UTRANS_FORWARD, parseError, status);
if (t != NULL) {
t->setID(ID);
}
}
else {
UVector transliterators(status);
int32_t passNumber = 1;
int32_t limit = parser.idBlockVector.size();
if (parser.dataVector.size() > limit)
limit = parser.dataVector.size();
for (int32_t i = 0; i < limit; i++) {
if (i < parser.idBlockVector.size()) {
UnicodeString* idBlock = (UnicodeString*)parser.idBlockVector.elementAt(i);
if (!idBlock->isEmpty()) {
Transliterator* temp = createInstance(*idBlock, UTRANS_FORWARD, parseError, status);
if (temp != NULL && temp->getDynamicClassID() != NullTransliterator::getStaticClassID())
transliterators.addElement(temp, status);
else
delete temp;
}
}
if (!parser.dataVector.isEmpty()) {
TransliterationRuleData* data = (TransliterationRuleData*)parser.dataVector.orphanElementAt(0);
RuleBasedTransliterator* temprbt = new RuleBasedTransliterator(UnicodeString(CompoundTransliterator::PASS_STRING) + (passNumber++),
data, TRUE);
// Check if NULL before adding it to transliterators to avoid future usage of NULL pointer.
if (temprbt == NULL) {
status = U_MEMORY_ALLOCATION_ERROR;
return t;
}
transliterators.addElement(temprbt, status);
}
}
t = new CompoundTransliterator(transliterators, passNumber - 1, parseError, status);
// Null pointer check
if (t != NULL) {
t->setID(ID);
t->adoptFilter(parser.orphanCompoundFilter());
}
}
if (U_SUCCESS(status) && t == NULL) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return t;
}