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