Combine CBC_ReedSolomonGF256Poly ctors.
Remove Init().
Change-Id: I4d289ad529c740f7fd61c836f8f502d87fad9fe1
Reviewed-on: https://pdfium-review.googlesource.com/c/46557
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
index 71d5dd9..f19886e 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomon.cpp
@@ -31,8 +31,8 @@
CBC_ReedSolomonEncoder::CBC_ReedSolomonEncoder(CBC_ReedSolomonGF256* field)
: m_field(field) {
- m_cachedGenerators.push_back(
- pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), 1));
+ m_cachedGenerators.push_back(pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(
+ m_field.Get(), std::vector<int32_t>{1}));
}
CBC_ReedSolomonEncoder::~CBC_ReedSolomonEncoder() {}
@@ -42,10 +42,8 @@
if (degree >= m_cachedGenerators.size()) {
CBC_ReedSolomonGF256Poly* lastGenerator = m_cachedGenerators.back().get();
for (size_t d = m_cachedGenerators.size(); d <= degree; ++d) {
- std::vector<int32_t> temp = {1, m_field->Exp(d - 1)};
- CBC_ReedSolomonGF256Poly temp_poly;
- temp_poly.Init(m_field.Get(), temp);
-
+ CBC_ReedSolomonGF256Poly temp_poly(m_field.Get(),
+ {1, m_field->Exp(d - 1)});
auto nextGenerator = lastGenerator->Multiply(&temp_poly);
if (!nextGenerator)
return nullptr;
@@ -74,9 +72,7 @@
for (size_t x = 0; x < dataBytes; x++)
infoCoefficients[x] = (*toEncode)[x];
- CBC_ReedSolomonGF256Poly info;
- info.Init(m_field.Get(), infoCoefficients);
-
+ CBC_ReedSolomonGF256Poly info(m_field.Get(), infoCoefficients);
auto infoTemp = info.MultiplyByMonomial(ecBytes, 1);
if (!infoTemp)
return false;
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
index ec7878c..b0dd0a2 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256.cpp
@@ -60,8 +60,10 @@
}
void CBC_ReedSolomonGF256::Init() {
- m_zero = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, 0);
- m_one = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, 1);
+ m_zero = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(
+ this, std::vector<int32_t>{0});
+ m_one = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this,
+ std::vector<int32_t>{1});
}
CBC_ReedSolomonGF256::~CBC_ReedSolomonGF256() {}
@@ -85,9 +87,7 @@
std::vector<int32_t> coefficients(degree + 1);
coefficients[0] = coefficient;
- auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
- temp->Init(this, coefficients);
- return temp;
+ return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(this, coefficients);
}
// static
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
index 59e239e..15f4259 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.cpp
@@ -30,26 +30,12 @@
#include "third_party/base/ptr_util.h"
#include "third_party/base/stl_util.h"
-CBC_ReedSolomonGF256Poly::CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field,
- int32_t coefficients) {
- if (!field)
- return;
-
- m_field = field;
- m_coefficients.push_back(coefficients);
-}
-
-CBC_ReedSolomonGF256Poly::CBC_ReedSolomonGF256Poly() {
- m_field = nullptr;
-}
-
-CBC_ReedSolomonGF256Poly::~CBC_ReedSolomonGF256Poly() = default;
-
-void CBC_ReedSolomonGF256Poly::Init(CBC_ReedSolomonGF256* field,
- const std::vector<int32_t>& coefficients) {
+CBC_ReedSolomonGF256Poly::CBC_ReedSolomonGF256Poly(
+ CBC_ReedSolomonGF256* field,
+ const std::vector<int32_t>& coefficients)
+ : m_field(field) {
+ ASSERT(m_field);
ASSERT(!coefficients.empty());
-
- m_field = field;
if (coefficients.size() == 1 || coefficients.front() != 0) {
m_coefficients = coefficients;
return;
@@ -69,6 +55,8 @@
}
}
+CBC_ReedSolomonGF256Poly::~CBC_ReedSolomonGF256Poly() = default;
+
const std::vector<int32_t>& CBC_ReedSolomonGF256Poly::GetCoefficients() const {
return m_coefficients;
}
@@ -87,9 +75,8 @@
std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Clone()
const {
- auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
- temp->Init(m_field.Get(), m_coefficients);
- return temp;
+ return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(),
+ m_coefficients);
}
std::unique_ptr<CBC_ReedSolomonGF256Poly>
@@ -106,16 +93,14 @@
std::vector<int32_t> sumDiff(largerCoefficients.size());
size_t lengthDiff = largerCoefficients.size() - smallerCoefficients.size();
- for (size_t i = 0; i < lengthDiff; i++)
+ for (size_t i = 0; i < lengthDiff; ++i)
sumDiff[i] = largerCoefficients[i];
- for (size_t j = lengthDiff; j < largerCoefficients.size(); j++) {
- sumDiff[j] = CBC_ReedSolomonGF256::AddOrSubtract(
- smallerCoefficients[j - lengthDiff], largerCoefficients[j]);
+ for (size_t i = lengthDiff; i < largerCoefficients.size(); ++i) {
+ sumDiff[i] = CBC_ReedSolomonGF256::AddOrSubtract(
+ smallerCoefficients[i - lengthDiff], largerCoefficients[i]);
}
- auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
- temp->Init(m_field.Get(), sumDiff);
- return temp;
+ return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), sumDiff);
}
std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Multiply(
@@ -135,9 +120,7 @@
product[i + j], m_field->Multiply(aCoeff, bCoefficients[j]));
}
}
- auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
- temp->Init(m_field.Get(), product);
- return temp;
+ return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), product);
}
std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Multiply(
@@ -152,9 +135,7 @@
for (size_t i = 0; i < size; i++)
product[i] = m_field->Multiply(m_coefficients[i], scalar);
- auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
- temp->Init(m_field.Get(), product);
- return temp;
+ return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), product);
}
std::unique_ptr<CBC_ReedSolomonGF256Poly>
@@ -170,9 +151,7 @@
for (size_t i = 0; i < size; i++)
product[i] = m_field->Multiply(m_coefficients[i], coefficient);
- auto temp = pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>();
- temp->Init(m_field.Get(), product);
- return temp;
+ return pdfium::MakeUnique<CBC_ReedSolomonGF256Poly>(m_field.Get(), product);
}
std::unique_ptr<CBC_ReedSolomonGF256Poly> CBC_ReedSolomonGF256Poly::Divide(
diff --git a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
index c3a3370c..0f046ce 100644
--- a/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
+++ b/fxbarcode/common/reedsolomon/BC_ReedSolomonGF256Poly.h
@@ -16,13 +16,10 @@
class CBC_ReedSolomonGF256Poly final {
public:
- CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field, int32_t coefficients);
- CBC_ReedSolomonGF256Poly();
+ CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field,
+ const std::vector<int32_t>& coefficients);
~CBC_ReedSolomonGF256Poly();
- void Init(CBC_ReedSolomonGF256* field,
- const std::vector<int32_t>& coefficients);
-
int32_t GetCoefficients(int32_t degree) const;
const std::vector<int32_t>& GetCoefficients() const;
int32_t GetDegree() const;
@@ -40,7 +37,7 @@
std::unique_ptr<CBC_ReedSolomonGF256Poly> Clone() const;
private:
- UnownedPtr<CBC_ReedSolomonGF256> m_field;
+ UnownedPtr<CBC_ReedSolomonGF256> const m_field;
std::vector<int32_t> m_coefficients;
};