aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/function/CharsetOperator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/function/CharsetOperator.cpp')
-rw-r--r--src/core/function/CharsetOperator.cpp102
1 files changed, 6 insertions, 96 deletions
diff --git a/src/core/function/CharsetOperator.cpp b/src/core/function/CharsetOperator.cpp
index 40978701..023fcd10 100644
--- a/src/core/function/CharsetOperator.cpp
+++ b/src/core/function/CharsetOperator.cpp
@@ -28,109 +28,19 @@
#include "core/function/CharsetOperator.h"
-#include <unicode/ucnv.h>
-#include <unicode/ucsdet.h>
-#include <unicode/ustring.h>
-#include <unicode/utypes.h>
-
-#include <cstddef>
-
#include "core/utils/LogUtils.h"
namespace GpgFrontend {
-auto CharsetOperator::Detect(const std::string &buffer)
+auto CharsetOperator::Detect(const QString &buffer)
-> CharsetOperator::CharsetInfo {
- const UCharsetMatch *ucm;
- UErrorCode status = U_ZERO_ERROR;
- UCharsetDetector *csd = ucsdet_open(&status);
-
- status = U_ZERO_ERROR;
- if (U_FAILURE(status) != 0) {
- GF_CORE_LOG_ERROR("failed to open charset detector: {}",
- u_errorName(status));
- return {"unknown", "unknown", 0};
- }
-
- status = U_ZERO_ERROR;
- ucsdet_setText(csd, buffer.data(), buffer.size(), &status);
- if (U_FAILURE(status) != 0) {
- GF_CORE_LOG_ERROR("failed to set text to charset detector: {}",
- u_errorName(status));
- return {"unknown", "unknown", 0};
- }
-
- status = U_ZERO_ERROR;
- ucm = ucsdet_detect(csd, &status);
-
- if (U_FAILURE(status) != 0) return {"unknown", "unknown", 0};
-
- status = U_ZERO_ERROR;
- const char *name = ucsdet_getName(ucm, &status);
- if (U_FAILURE(status) != 0) return {"unknown", "unknown", 0};
-
- status = U_ZERO_ERROR;
- int confidence = ucsdet_getConfidence(ucm, &status);
- if (U_FAILURE(status) != 0) return {name, "unknown", 0};
-
- status = U_ZERO_ERROR;
- const char *language = ucsdet_getLanguage(ucm, &status);
- if (U_FAILURE(status) != 0) return {name, "unknown", confidence};
-
- GF_CORE_LOG_DEBUG("detected charset: {} {} {}", name, language, confidence);
- return {name, language, confidence};
+ // TODO
+ return {"", "", 0};
}
-auto CharsetOperator::Convert2Utf8(const std::string &buffer,
- std::string &out_buffer,
- std::string from_charset_name) -> bool {
- UErrorCode status = U_ZERO_ERROR;
- const auto from_encode = std::string("utf-8");
- const auto &to_encode = from_charset_name;
-
- GF_CORE_LOG_DEBUG("Converting buffer: {}", buffer.size());
-
- // test if the charset is supported
- UConverter *conv = ucnv_open(from_encode.c_str(), &status);
- ucnv_close(conv);
- if (U_FAILURE(status) != 0) {
- GF_CORE_LOG_ERROR("failed to open converter: {}, from encode: {}",
- u_errorName(status), from_encode);
- return false;
- }
-
- // test if the charset is supported
- conv = ucnv_open(to_encode.c_str(), &status);
- ucnv_close(conv);
- if (U_FAILURE(status) != 0) {
- GF_CORE_LOG_ERROR("failed to open converter: {}, to encode: {}",
- u_errorName(status), to_encode);
- return false;
- }
-
- status = U_ZERO_ERROR;
- int32_t target_limit = 0;
- int32_t target_capacity = 0;
-
- target_capacity =
- ucnv_convert(from_encode.c_str(), to_encode.c_str(), nullptr,
- target_limit, buffer.data(), buffer.size(), &status);
-
- if (status == U_BUFFER_OVERFLOW_ERROR) {
- status = U_ZERO_ERROR;
- out_buffer.clear();
- out_buffer.resize(target_capacity);
- ucnv_convert(from_encode.c_str(), to_encode.c_str(), out_buffer.data(),
- out_buffer.size(), buffer.data(), buffer.size(), &status);
- }
-
- if (U_FAILURE(status) != 0) {
- GF_CORE_LOG_ERROR("failed to convert to utf-8: {}", u_errorName(status));
- return false;
- }
-
- GF_CORE_LOG_DEBUG("converted buffer: {} bytes", out_buffer.size());
- return true;
+auto CharsetOperator::Convert2Utf8(const QString &buffer, QString &out_buffer,
+ QString from_charset_name) -> bool {
+ // TODO
}
} // namespace GpgFrontend \ No newline at end of file