diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-06-04 15:50:03 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-06-04 15:50:03 +0200 |
commit | e3b7744bee37c3d4a026d2193bed5e9439c40ff3 (patch) | |
tree | f3f7b07ca9bd78bf7ac2d76dd55b61b2a8bb549e /application/basilisk/components/translation/cld2/cldapp.cc | |
parent | cbce4f0b6a337f8250b62cae028f1c6d4cce51df (diff) | |
parent | 031afcafe288bf0f46c0c5caae20dd3db8bd0297 (diff) | |
download | UXP-e3b7744bee37c3d4a026d2193bed5e9439c40ff3.tar UXP-e3b7744bee37c3d4a026d2193bed5e9439c40ff3.tar.gz UXP-e3b7744bee37c3d4a026d2193bed5e9439c40ff3.tar.lz UXP-e3b7744bee37c3d4a026d2193bed5e9439c40ff3.tar.xz UXP-e3b7744bee37c3d4a026d2193bed5e9439c40ff3.zip |
Merge branch 'move-basilisk'
Diffstat (limited to 'application/basilisk/components/translation/cld2/cldapp.cc')
-rw-r--r-- | application/basilisk/components/translation/cld2/cldapp.cc | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/application/basilisk/components/translation/cld2/cldapp.cc b/application/basilisk/components/translation/cld2/cldapp.cc new file mode 100644 index 000000000..4750cc54b --- /dev/null +++ b/application/basilisk/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" |