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