Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1259)

Unified Diff: xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.cpp

Issue 1936733002: Replace CFX_PtrArray with typesafe CFX_ArrayTemplate, part 10 (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Nits Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h ('k') | xfa/fxbarcode/qrcode/BC_QRBitMatrixParser.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.cpp
diff --git a/xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.cpp b/xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.cpp
index d0bbe5ab0a0d06a646522de7a11f52465a7941df..47fbcce5d045dce35560d6a6548eef865ec48d22 100644
--- a/xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.cpp
+++ b/xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.cpp
@@ -20,6 +20,8 @@
* limitations under the License.
*/
+#include <memory>
+
#include "xfa/fxbarcode/pdf417/BC_PDF417Common.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417ECModulusGF.h"
#include "xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h"
@@ -212,19 +214,20 @@ CBC_PDF417ECModulusPoly* CBC_PDF417ECModulusPoly::multiply(int32_t scalar,
BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
return modulusPoly;
}
+
CBC_PDF417ECModulusPoly* CBC_PDF417ECModulusPoly::multiplyByMonomial(
int32_t degree,
int32_t coefficient,
int32_t& e) {
if (degree < 0) {
e = BCExceptionIllegalArgument;
- return NULL;
+ return nullptr;
}
- CBC_PDF417ECModulusPoly* modulusPoly = NULL;
+ CBC_PDF417ECModulusPoly* modulusPoly = nullptr;
if (coefficient == 0) {
modulusPoly = new CBC_PDF417ECModulusPoly(
m_field->getZero()->m_field, m_field->getZero()->m_coefficients, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+ BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
return modulusPoly;
}
int32_t size = m_coefficients.GetSize();
@@ -234,74 +237,62 @@ CBC_PDF417ECModulusPoly* CBC_PDF417ECModulusPoly::multiplyByMonomial(
product[i] = m_field->multiply(m_coefficients[i], coefficient);
}
modulusPoly = new CBC_PDF417ECModulusPoly(m_field, product, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+ BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
return modulusPoly;
}
-CFX_PtrArray* CBC_PDF417ECModulusPoly::divide(CBC_PDF417ECModulusPoly* other,
- int32_t& e) {
+
+CFX_ArrayTemplate<CBC_PDF417ECModulusPoly*>* CBC_PDF417ECModulusPoly::divide(
+ CBC_PDF417ECModulusPoly* other,
+ int32_t& e) {
if (other->isZero()) {
e = BCExceptionDivideByZero;
- return NULL;
- }
- CBC_PDF417ECModulusPoly* quotient = new CBC_PDF417ECModulusPoly(
- m_field->getZero()->m_field, m_field->getZero()->m_coefficients, e);
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
- CBC_PDF417ECModulusPoly* remainder =
- new CBC_PDF417ECModulusPoly(m_field, m_coefficients, e);
- if (e != BCExceptionNO) {
- delete quotient;
- return NULL;
+ return nullptr;
}
+ std::unique_ptr<CBC_PDF417ECModulusPoly> quotient(new CBC_PDF417ECModulusPoly(
+ m_field->getZero()->m_field, m_field->getZero()->m_coefficients, e));
+ BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
+ std::unique_ptr<CBC_PDF417ECModulusPoly> remainder(
+ new CBC_PDF417ECModulusPoly(m_field, m_coefficients, e));
+ if (e != BCExceptionNO)
+ return nullptr;
+
int32_t denominatorLeadingTerm = other->getCoefficient(other->getDegree());
int32_t inverseDenominatorLeadingTerm =
m_field->inverse(denominatorLeadingTerm, e);
- if (e != BCExceptionNO) {
- delete quotient;
- delete remainder;
- return NULL;
- }
+ if (e != BCExceptionNO)
+ return nullptr;
+
while (remainder->getDegree() >= other->getDegree() && !remainder->isZero()) {
int32_t degreeDifference = remainder->getDegree() - other->getDegree();
int32_t scale =
m_field->multiply(remainder->getCoefficient(remainder->getDegree()),
inverseDenominatorLeadingTerm);
- CBC_PDF417ECModulusPoly* term =
- other->multiplyByMonomial(degreeDifference, scale, e);
- if (e != BCExceptionNO) {
- delete quotient;
- delete remainder;
- return NULL;
- }
- CBC_PDF417ECModulusPoly* iterationQuotient =
- m_field->buildMonomial(degreeDifference, scale, e);
- if (e != BCExceptionNO) {
- delete quotient;
- delete remainder;
- delete term;
- return NULL;
- }
- CBC_PDF417ECModulusPoly* temp = quotient;
- quotient = temp->add(iterationQuotient, e);
- delete iterationQuotient;
- delete temp;
- if (e != BCExceptionNO) {
- delete remainder;
- return NULL;
- }
- temp = remainder;
- remainder = temp->subtract(term, e);
- delete term;
- delete temp;
- if (e != BCExceptionNO) {
- delete quotient;
- return NULL;
- }
+ std::unique_ptr<CBC_PDF417ECModulusPoly> term(
+ other->multiplyByMonomial(degreeDifference, scale, e));
+ if (e != BCExceptionNO)
+ return nullptr;
+
+ std::unique_ptr<CBC_PDF417ECModulusPoly> iterationQuotient(
+ m_field->buildMonomial(degreeDifference, scale, e));
+ if (e != BCExceptionNO)
+ return nullptr;
+
+ quotient.reset(quotient->add(iterationQuotient.get(), e));
+ if (e != BCExceptionNO)
+ return nullptr;
+
+ remainder.reset(remainder->subtract(term.get(), e));
+ if (e != BCExceptionNO)
+ return nullptr;
}
- CFX_PtrArray* modulusPoly = new CFX_PtrArray;
- modulusPoly->Add(quotient);
- modulusPoly->Add(remainder);
+
+ CFX_ArrayTemplate<CBC_PDF417ECModulusPoly*>* modulusPoly =
+ new CFX_ArrayTemplate<CBC_PDF417ECModulusPoly*>();
+ modulusPoly->Add(quotient.release());
+ modulusPoly->Add(remainder.release());
return modulusPoly;
}
+
CFX_ByteString CBC_PDF417ECModulusPoly::toString() {
CFX_ByteString result;
for (int32_t degree = getDegree(); degree >= 0; degree--) {
« no previous file with comments | « xfa/fxbarcode/pdf417/BC_PDF417ECModulusPoly.h ('k') | xfa/fxbarcode/qrcode/BC_QRBitMatrixParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698