Home | History | Annotate | Download | only in reedsolomon
      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