Fix up CBC_PDF417ErrorCorrection. - Remove ctor/dtor since the class only has static methods. - Make GenerateErrorCorrection() return optional. Change-Id: Ida887df8ef47d65f6adb08d2381384cbb6c3e253 Reviewed-on: https://pdfium-review.googlesource.com/c/46554 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxbarcode/pdf417/BC_PDF417.cpp b/fxbarcode/pdf417/BC_PDF417.cpp index 330584b..abf9448 100644 --- a/fxbarcode/pdf417/BC_PDF417.cpp +++ b/fxbarcode/pdf417/BC_PDF417.cpp
@@ -360,7 +360,7 @@ bool CBC_PDF417::GenerateBarcodeLogic(const WideStringView& msg, int32_t errorCorrectionLevel) { int32_t errorCorrectionCodeWords = - CBC_PDF417ErrorCorrection::getErrorCorrectionCodewordCount( + CBC_PDF417ErrorCorrection::GetErrorCorrectionCodewordCount( errorCorrectionLevel); if (errorCorrectionCodeWords < 0) return false; @@ -390,12 +390,12 @@ sb += (wchar_t)900; WideString dataCodewords(sb); - WideString ec; - if (!CBC_PDF417ErrorCorrection::generateErrorCorrection( - dataCodewords, errorCorrectionLevel, &ec)) { + Optional<WideString> ec = CBC_PDF417ErrorCorrection::GenerateErrorCorrection( + dataCodewords, errorCorrectionLevel); + if (!ec.has_value()) return false; - } - WideString fullCodewords = dataCodewords + ec; + + WideString fullCodewords = dataCodewords + ec.value(); m_barcodeMatrix = pdfium::MakeUnique<CBC_BarcodeMatrix>(cols, rows); encodeLowLevel(fullCodewords, cols, rows, errorCorrectionLevel, m_barcodeMatrix.get());
diff --git a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp index 074e8c4..2fdf6a5 100644 --- a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp +++ b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.cpp
@@ -122,25 +122,21 @@ } // namespace -CBC_PDF417ErrorCorrection::CBC_PDF417ErrorCorrection() {} -CBC_PDF417ErrorCorrection::~CBC_PDF417ErrorCorrection() {} -int32_t CBC_PDF417ErrorCorrection::getErrorCorrectionCodewordCount( +// static +int32_t CBC_PDF417ErrorCorrection::GetErrorCorrectionCodewordCount( int32_t errorCorrectionLevel) { if (errorCorrectionLevel < 0 || errorCorrectionLevel > 8) return -1; return 1 << (errorCorrectionLevel + 1); } -bool CBC_PDF417ErrorCorrection::generateErrorCorrection( +// static +Optional<WideString> CBC_PDF417ErrorCorrection::GenerateErrorCorrection( const WideString& dataCodewords, - int32_t errorCorrectionLevel, - WideString* result) { - ASSERT(result); - ASSERT(result->IsEmpty()); - - int32_t k = getErrorCorrectionCodewordCount(errorCorrectionLevel); + int32_t errorCorrectionLevel) { + int32_t k = GetErrorCorrectionCodewordCount(errorCorrectionLevel); if (k < 0) - return false; + return {}; std::vector<wchar_t> ech(k); size_t sld = dataCodewords.GetLength(); @@ -157,11 +153,12 @@ t3 = 929 - t2; ech[0] = (wchar_t)(t3 % 929); } - result->Reserve(k); + WideString result; + result.Reserve(k); for (int32_t j = k - 1; j >= 0; j--) { if (ech[j] != 0) ech[j] = static_cast<wchar_t>(929) - ech[j]; - *result += ech[j]; + result += ech[j]; } - return true; + return result; }
diff --git a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h index 3e28162..f5aa898 100644 --- a/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h +++ b/fxbarcode/pdf417/BC_PDF417ErrorCorrection.h
@@ -10,16 +10,17 @@ #include <stdint.h> #include "core/fxcrt/fx_string.h" +#include "third_party/base/optional.h" class CBC_PDF417ErrorCorrection { public: - CBC_PDF417ErrorCorrection(); - virtual ~CBC_PDF417ErrorCorrection(); + CBC_PDF417ErrorCorrection() = delete; + ~CBC_PDF417ErrorCorrection() = delete; - static int32_t getErrorCorrectionCodewordCount(int32_t errorCorrectionLevel); - static bool generateErrorCorrection(const WideString& dataCodewords, - int32_t errorCorrectionLevel, - WideString* result); + static int32_t GetErrorCorrectionCodewordCount(int32_t errorCorrectionLevel); + static Optional<WideString> GenerateErrorCorrection( + const WideString& dataCodewords, + int32_t errorCorrectionLevel); }; #endif // FXBARCODE_PDF417_BC_PDF417ERRORCORRECTION_H_