1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef XFA_FXBARCODE_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256POLY_H_ 8 #define XFA_FXBARCODE_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256POLY_H_ 9 10 #include "core/fxcrt/fx_basic.h" 11 12 class CBC_ReedSolomonGF256; 13 14 class CBC_ReedSolomonGF256Poly final { 15 public: 16 CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field, int32_t coefficients); 17 CBC_ReedSolomonGF256Poly(); 18 ~CBC_ReedSolomonGF256Poly(); 19 void Init(CBC_ReedSolomonGF256* field, 20 CFX_ArrayTemplate<int32_t>* coefficients, 21 int32_t& e); 22 23 int32_t GetCoefficients(int32_t degree); 24 CFX_ArrayTemplate<int32_t>* GetCoefficients(); 25 int32_t GetDegree(); 26 bool IsZero(); 27 int32_t EvaluateAt(int32_t a); 28 CBC_ReedSolomonGF256Poly* AddOrSubtract(CBC_ReedSolomonGF256Poly* other, 29 int32_t& e); 30 CBC_ReedSolomonGF256Poly* Multiply(CBC_ReedSolomonGF256Poly* other, 31 int32_t& e); 32 CBC_ReedSolomonGF256Poly* Multiply(int32_t scalar, int32_t& e); 33 CBC_ReedSolomonGF256Poly* MultiplyByMonomial(int32_t degree, 34 int32_t coefficient, 35 int32_t& e); 36 CFX_ArrayTemplate<CBC_ReedSolomonGF256Poly*>* Divide( 37 CBC_ReedSolomonGF256Poly* other, 38 int32_t& e); 39 40 CBC_ReedSolomonGF256Poly* Clone(int32_t& e); 41 42 private: 43 CBC_ReedSolomonGF256* m_field; 44 CFX_ArrayTemplate<int32_t> m_coefficients; 45 }; 46 47 #endif // XFA_FXBARCODE_COMMON_REEDSOLOMON_BC_REEDSOLOMONGF256POLY_H_ 48