X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..ba6d6ed23dec08b1cd5700a128c0752491c10ac9:/icuSources/i18n/casetrn.cpp diff --git a/icuSources/i18n/casetrn.cpp b/icuSources/i18n/casetrn.cpp index 39469edb..20a73e34 100644 --- a/icuSources/i18n/casetrn.cpp +++ b/icuSources/i18n/casetrn.cpp @@ -1,7 +1,7 @@ /* ******************************************************************************* * -* Copyright (C) 2001-2004, International Business Machines +* Copyright (C) 2001-2011, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* @@ -22,6 +22,8 @@ #include "unicode/uchar.h" #include "unicode/ustring.h" +#include "unicode/utf.h" +#include "unicode/utf16.h" #include "tolowtrn.h" #include "ucase.h" #include "cpputils.h" @@ -30,6 +32,8 @@ U_CFUNC UChar32 U_CALLCONV utrans_rep_caseContextIterator(void *context, int8_t dir) { + U_NAMESPACE_USE + UCaseContext *csc=(UCaseContext *)context; Replaceable *rep=(Replaceable *)csc->p; UChar32 c; @@ -79,21 +83,16 @@ utrans_rep_caseContextIterator(void *context, int8_t dir) U_NAMESPACE_BEGIN -UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CaseMapTransliterator) +UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(CaseMapTransliterator) /** * Constructs a transliterator. */ -CaseMapTransliterator::CaseMapTransliterator(const Locale &loc, const UnicodeString &id, UCaseMapFull *map) : +CaseMapTransliterator::CaseMapTransliterator(const UnicodeString &id, UCaseMapFull *map) : Transliterator(id, 0), - fLoc(loc), fLocName(NULL), - fCsp(NULL), + fCsp(ucase_getSingleton()), fMap(map) { - UErrorCode errorCode = U_ZERO_ERROR; - fCsp = ucase_getSingleton(&errorCode); // expect to get NULL if failure - fLocName=fLoc.getName(); - // TODO test incremental mode with context-sensitive text (e.g. greek sigma) // TODO need to call setMaximumContextLength()?! } @@ -109,29 +108,26 @@ CaseMapTransliterator::~CaseMapTransliterator() { */ CaseMapTransliterator::CaseMapTransliterator(const CaseMapTransliterator& o) : Transliterator(o), - fLoc(o.fLoc), fLocName(NULL), fCsp(o.fCsp), fMap(o.fMap) + fCsp(o.fCsp), fMap(o.fMap) { - fLocName=fLoc.getName(); } /** * Assignment operator. */ -CaseMapTransliterator& CaseMapTransliterator::operator=(const CaseMapTransliterator& o) { +/*CaseMapTransliterator& CaseMapTransliterator::operator=(const CaseMapTransliterator& o) { Transliterator::operator=(o); - fLoc = o.fLoc; - fLocName = fLoc.getName(); fCsp = o.fCsp; fMap = o.fMap; return *this; -} +}*/ /** * Transliterator API. */ -Transliterator* CaseMapTransliterator::clone(void) const { +/*Transliterator* CaseMapTransliterator::clone(void) const { return new CaseMapTransliterator(*this); -} +}*/ /** * Implements {@link Transliterator#handleTransliterate}. @@ -160,12 +156,13 @@ void CaseMapTransliterator::handleTransliterate(Replaceable& text, c=text.char32At(textPos); csc.cpLimit=textPos+=U16_LENGTH(c); - result=fMap(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, fLocName, &locCache); + result=fMap(fCsp, c, utrans_rep_caseContextIterator, &csc, &s, "", &locCache); if(csc.b1 && isIncremental) { // fMap() tried to look beyond the context limit // wait for more input - break; + offsets.start=csc.cpStart; + return; } if(result>=0) {