1 /* 2 ********************************************************************** 3 * Copyright (C) 2005-2012, International Business Machines 4 * Corporation and others. All Rights Reserved. 5 ********************************************************************** 6 */ 7 8 #include "unicode/utypes.h" 9 10 #if !UCONFIG_NO_CONVERSION 11 #include "unicode/unistr.h" 12 #include "unicode/ucnv.h" 13 14 #include "csmatch.h" 15 16 #include "csrecog.h" 17 #include "inputext.h" 18 19 U_NAMESPACE_BEGIN 20 21 CharsetMatch::CharsetMatch() 22 : textIn(NULL), confidence(0), fCharsetName(NULL), fLang(NULL) 23 { 24 // nothing else to do. 25 } 26 27 void CharsetMatch::set(InputText *input, const CharsetRecognizer *cr, int32_t conf, 28 const char *csName, const char *lang) 29 { 30 textIn = input; 31 confidence = conf; 32 fCharsetName = csName; 33 fLang = lang; 34 if (cr != NULL) { 35 if (fCharsetName == NULL) { 36 fCharsetName = cr->getName(); 37 } 38 if (fLang == NULL) { 39 fLang = cr->getLanguage(); 40 } 41 } 42 } 43 44 const char* CharsetMatch::getName()const 45 { 46 return fCharsetName; 47 } 48 49 const char* CharsetMatch::getLanguage()const 50 { 51 return fLang; 52 } 53 54 int32_t CharsetMatch::getConfidence()const 55 { 56 return confidence; 57 } 58 59 int32_t CharsetMatch::getUChars(UChar *buf, int32_t cap, UErrorCode *status) const 60 { 61 UConverter *conv = ucnv_open(getName(), status); 62 int32_t result = ucnv_toUChars(conv, buf, cap, (const char *) textIn->fRawInput, textIn->fRawLength, status); 63 64 ucnv_close(conv); 65 66 return result; 67 } 68 69 U_NAMESPACE_END 70 71 #endif 72