tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

csmatch.cpp (1704B)


      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(nullptr), confidence(0), fCharsetName(nullptr), fLang(nullptr)
     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 != nullptr) {
     37        if (fCharsetName == nullptr) {
     38            fCharsetName = cr->getName();
     39        }
     40        if (fLang == nullptr) {
     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(char16_t *buf, int32_t cap, UErrorCode *status) const
     62 {
     63    UConverter *conv = ucnv_open(getName(), status);
     64    int32_t result = ucnv_toUChars(conv, buf, cap, reinterpret_cast<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