diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /browser/components/translation/cld2/cldapp.cc | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'browser/components/translation/cld2/cldapp.cc')
-rw-r--r-- | browser/components/translation/cld2/cldapp.cc | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/browser/components/translation/cld2/cldapp.cc b/browser/components/translation/cld2/cldapp.cc new file mode 100644 index 000000000..4750cc54b --- /dev/null +++ b/browser/components/translation/cld2/cldapp.cc @@ -0,0 +1,107 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "public/compact_lang_det.h" + +#define MAX_RESULTS 3 + +class Language { +public: + Language(CLD2::Language lang) : mLang(lang) {} + + const char* getLanguageCode() const + { + return CLD2::LanguageCode(mLang); + } + +private: + const CLD2::Language mLang; +}; + +class LanguageGuess : public Language { +public: + LanguageGuess(CLD2::Language lang, char percent) : + Language(lang), mPercent(percent) {} + + char getPercent() const + { + return mPercent; + } + +private: + const char mPercent; +}; + + +class LanguageInfo : public Language { +public: + static LanguageInfo* detectLanguage(const char* buffer, bool isPlainText) + { + CLD2::Language languages[MAX_RESULTS] = {}; + int percentages[MAX_RESULTS] = {}; + bool isReliable = false; + + // This is ignored. + int textBytes; + + CLD2::Language bestGuess = DetectLanguageSummary( + buffer, strlen(buffer), isPlainText, + languages, percentages, &textBytes, + &isReliable); + + return new LanguageInfo(isReliable, bestGuess, languages, percentages); + } + + static LanguageInfo* detectLanguage(const char* buffer, bool isPlainText, + const char* tldHint, int encodingHint, + const char* languageHint) + { + CLD2::CLDHints hints = {languageHint, tldHint, encodingHint, CLD2::UNKNOWN_LANGUAGE}; + + CLD2::Language languages[MAX_RESULTS] = {}; + int percentages[MAX_RESULTS] = {}; + bool isReliable = false; + + // These are ignored. + double scores[MAX_RESULTS]; + int textBytes; + + CLD2::Language bestGuess = ExtDetectLanguageSummary( + buffer, strlen(buffer), isPlainText, + &hints, 0, + languages, percentages, scores, + nullptr, &textBytes, &isReliable); + + return new LanguageInfo(isReliable, bestGuess, languages, percentages); + } + + ~LanguageInfo() + { + for (int i = 0; i < MAX_RESULTS; i++) { + delete languages[i]; + } + } + + bool getIsReliable() const + { + return mIsReliable; + } + + const LanguageGuess* languages[MAX_RESULTS]; + +private: + LanguageInfo(bool isReliable, CLD2::Language bestGuess, + CLD2::Language languageIDs[MAX_RESULTS], + int percentages[MAX_RESULTS]) : + Language(bestGuess), mIsReliable(isReliable) + { + for (int i = 0; i < MAX_RESULTS; i++) { + languages[i] = new LanguageGuess(languageIDs[i], percentages[i]); + } + } + + const bool mIsReliable; +}; + +#include "cld.cpp" |