���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /proc/self/root/home/real/node-v13.0.1/deps/icu-small/source/i18n/ |
// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ********************************************************************** * Copyright (c) 2002-2012, International Business Machines Corporation * and others. All Rights Reserved. ********************************************************************** * Date Name Description * 02/04/2002 aliu Creation. ********************************************************************** */ #include "unicode/utypes.h" #if !UCONFIG_NO_TRANSLITERATION #include "unicode/translit.h" #include "unicode/uniset.h" #include "funcrepl.h" static const UChar AMPERSAND = 38; // '&' static const UChar OPEN[] = {40,32,0}; // "( " static const UChar CLOSE[] = {32,41,0}; // " )" U_NAMESPACE_BEGIN UOBJECT_DEFINE_RTTI_IMPLEMENTATION(FunctionReplacer) /** * Construct a replacer that takes the output of the given * replacer, passes it through the given transliterator, and emits * the result as output. */ FunctionReplacer::FunctionReplacer(Transliterator* adoptedTranslit, UnicodeFunctor* adoptedReplacer) { translit = adoptedTranslit; replacer = adoptedReplacer; } /** * Copy constructor. */ FunctionReplacer::FunctionReplacer(const FunctionReplacer& other) : UnicodeFunctor(other), UnicodeReplacer(other) { translit = other.translit->clone(); replacer = other.replacer->clone(); } /** * Destructor */ FunctionReplacer::~FunctionReplacer() { delete translit; delete replacer; } /** * Implement UnicodeFunctor */ UnicodeFunctor* FunctionReplacer::clone() const { return new FunctionReplacer(*this); } /** * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer * and return the pointer. */ UnicodeReplacer* FunctionReplacer::toReplacer() const { FunctionReplacer *nonconst_this = const_cast<FunctionReplacer *>(this); UnicodeReplacer *nonconst_base = static_cast<UnicodeReplacer *>(nonconst_this); return nonconst_base; } /** * UnicodeReplacer API */ int32_t FunctionReplacer::replace(Replaceable& text, int32_t start, int32_t limit, int32_t& cursor) { // First delegate to subordinate replacer int32_t len = replacer->toReplacer()->replace(text, start, limit, cursor); limit = start + len; // Now transliterate limit = translit->transliterate(text, start, limit); return limit - start; } /** * UnicodeReplacer API */ UnicodeString& FunctionReplacer::toReplacerPattern(UnicodeString& rule, UBool escapeUnprintable) const { UnicodeString str; rule.truncate(0); rule.append(AMPERSAND); rule.append(translit->getID()); rule.append(OPEN, 2); rule.append(replacer->toReplacer()->toReplacerPattern(str, escapeUnprintable)); rule.append(CLOSE, 2); return rule; } /** * Implement UnicodeReplacer */ void FunctionReplacer::addReplacementSetTo(UnicodeSet& toUnionTo) const { UnicodeSet set; toUnionTo.addAll(translit->getTargetSet(set)); } /** * UnicodeFunctor API */ void FunctionReplacer::setData(const TransliterationRuleData* d) { replacer->setData(d); } U_NAMESPACE_END #endif /* #if !UCONFIG_NO_TRANSLITERATION */ //eof