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