// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef _JBIG2_ARITH_INT_DECODER_H_
#define _JBIG2_ARITH_INT_DECODER_H_
#include "JBig2_Module.h"
#include "JBig2_ArithDecoder.h"
class CJBig2_ArithIntDecoder : public CJBig2_Object {
 public:
  CJBig2_ArithIntDecoder();

  ~CJBig2_ArithIntDecoder();

  int decode(CJBig2_ArithDecoder* pArithDecoder, int* nResult);

 private:
  JBig2ArithCtx* IAx;
};
class CJBig2_ArithIaidDecoder : public CJBig2_Object {
 public:
  CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA);

  ~CJBig2_ArithIaidDecoder();

  int decode(CJBig2_ArithDecoder* pArithDecoder, int* nResult);

 private:
  JBig2ArithCtx* IAID;

  unsigned char SBSYMCODELEN;
};
#endif
