// 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 XFA_SRC_FXBARCODE_COMMON_BC_COMMONBITARRAY_H_
#define XFA_SRC_FXBARCODE_COMMON_BC_COMMONBITARRAY_H_

#include "core/include/fxcrt/fx_basic.h"

class CBC_CommonBitArray {
 public:
  CBC_CommonBitArray(CBC_CommonBitArray* array);
  CBC_CommonBitArray(int32_t size);
  CBC_CommonBitArray();
  virtual ~CBC_CommonBitArray();
  int32_t GetSize();
  CFX_Int32Array& GetBits();
  int32_t GetSizeInBytes();
  FX_BOOL Get(int32_t i);
  void Set(int32_t i);
  void Flip(int32_t i);
  void SetBulk(int32_t i, int32_t newBits);
  FX_BOOL IsRange(int32_t start, int32_t end, FX_BOOL value, int32_t& e);
  int32_t* GetBitArray();
  void Reverse();
  void Clear();

 private:
  int32_t m_size;
  CFX_Int32Array m_bits;
};

#endif  // XFA_SRC_FXBARCODE_COMMON_BC_COMMONBITARRAY_H_
