Home | History | Annotate | Download | only in i18n
      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