16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (C) 2005-2012, International Business Machines 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Corporation and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_CONVERSION 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h" 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ucnv.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "csmatch.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "csrecog.h" 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "inputext.h" 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgCharsetMatch::CharsetMatch() 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org : textIn(NULL), confidence(0), fCharsetName(NULL), fLang(NULL) 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // nothing else to do. 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid CharsetMatch::set(InputText *input, const CharsetRecognizer *cr, int32_t conf, 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *csName, const char *lang) 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org textIn = input; 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org confidence = conf; 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fCharsetName = csName; 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fLang = lang; 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (cr != NULL) { 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fCharsetName == NULL) { 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fCharsetName = cr->getName(); 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fLang == NULL) { 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fLang = cr->getLanguage(); 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst char* CharsetMatch::getName()const 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fCharsetName; 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst char* CharsetMatch::getLanguage()const 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fLang; 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t CharsetMatch::getConfidence()const 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return confidence; 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t CharsetMatch::getUChars(UChar *buf, int32_t cap, UErrorCode *status) const 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UConverter *conv = ucnv_open(getName(), status); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t result = ucnv_toUChars(conv, buf, cap, (const char *) textIn->fRawInput, textIn->fRawLength, status); 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ucnv_close(conv); 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return result; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 72