1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru **********************************************************************
354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius *   Copyright (C) 2005-2012, International Business Machines
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *   Corporation and others.  All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru **********************************************************************
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_CONVERSION
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/unistr.h"
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ucnv.h"
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "csmatch.h"
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "csrecog.h"
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "inputext.h"
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruCharsetMatch::CharsetMatch()
2254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius  : textIn(NULL), confidence(0), fCharsetName(NULL), fLang(NULL)
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    // nothing else to do.
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
2754dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusvoid CharsetMatch::set(InputText *input, const CharsetRecognizer *cr, int32_t conf,
2854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius                       const char *csName, const char *lang)
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    textIn = input;
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    confidence = conf;
3254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    fCharsetName = csName;
3354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    fLang = lang;
3454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    if (cr != NULL) {
3554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        if (fCharsetName == NULL) {
3654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius            fCharsetName = cr->getName();
3754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        }
3854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        if (fLang == NULL) {
3954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius            fLang = cr->getLanguage();
4054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        }
4154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    }
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char* CharsetMatch::getName()const
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
4654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    return fCharsetName;
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruconst char* CharsetMatch::getLanguage()const
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
5154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    return fLang;
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint32_t CharsetMatch::getConfidence()const
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return confidence;
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint32_t CharsetMatch::getUChars(UChar *buf, int32_t cap, UErrorCode *status) const
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    UConverter *conv = ucnv_open(getName(), status);
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    int32_t result = ucnv_toUChars(conv, buf, cap, (const char *) textIn->fRawInput, textIn->fRawLength, status);
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    ucnv_close(conv);
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    return result;
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
72