// 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 _BC_COMMONBITARRAY_H_
#define _BC_COMMONBITARRAY_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
