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 _BC_READSOLOMONGF256POLY_H_
8#define _BC_READSOLOMONGF256POLY_H_
9class CBC_ReedSolomonGF256;
10class CBC_ReedSolomonGF256Poly {
11 public:
12  CBC_ReedSolomonGF256Poly(CBC_ReedSolomonGF256* field, int32_t coefficients);
13  CBC_ReedSolomonGF256Poly();
14  virtual ~CBC_ReedSolomonGF256Poly();
15  int32_t GetCoefficients(int32_t degree);
16  CFX_Int32Array* GetCoefficients();
17  int32_t GetDegree();
18  FX_BOOL IsZero();
19  int32_t EvaluateAt(int32_t a);
20  CBC_ReedSolomonGF256Poly* AddOrSubtract(CBC_ReedSolomonGF256Poly* other,
21                                          int32_t& e);
22  CBC_ReedSolomonGF256Poly* Multiply(CBC_ReedSolomonGF256Poly* other,
23                                     int32_t& e);
24  CBC_ReedSolomonGF256Poly* Multiply(int32_t scalar, int32_t& e);
25  CBC_ReedSolomonGF256Poly* MultiplyByMonomial(int32_t degree,
26                                               int32_t coefficient,
27                                               int32_t& e);
28  CFX_PtrArray* Divide(CBC_ReedSolomonGF256Poly* other, int32_t& e);
29  CBC_ReedSolomonGF256Poly* Clone(int32_t& e);
30  virtual void Init(CBC_ReedSolomonGF256* field,
31                    CFX_Int32Array* coefficients,
32                    int32_t& e);
33
34 private:
35  CBC_ReedSolomonGF256* m_field;
36  CFX_Int32Array m_coefficients;
37};
38#endif
39