/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.36
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */


public class OBBitVec {
  private long swigCPtr;
  protected boolean swigCMemOwn;

  protected OBBitVec(long cPtr, boolean cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = cPtr;
  }

  protected static long getCPtr(OBBitVec obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if(swigCPtr != 0 && swigCMemOwn) {
      swigCMemOwn = false;
      openbabelJNI.delete_OBBitVec(swigCPtr);
    }
    swigCPtr = 0;
  }

  public OBBitVec() {
    this(openbabelJNI.new_OBBitVec__SWIG_0(), true);
  }

  public OBBitVec(long size_in_bits) {
    this(openbabelJNI.new_OBBitVec__SWIG_1(size_in_bits), true);
  }

  public OBBitVec(OBBitVec bv) {
    this(openbabelJNI.new_OBBitVec__SWIG_2(OBBitVec.getCPtr(bv), bv), true);
  }

  public void SetBitOn(long bit_offset) {
    openbabelJNI.OBBitVec_SetBitOn(swigCPtr, this, bit_offset);
  }

  public void SetBitOff(long bit_offset) {
    openbabelJNI.OBBitVec_SetBitOff(swigCPtr, this, bit_offset);
  }

  public void SetRangeOn(long lo_bit_offset, long hi_bit_offset) {
    openbabelJNI.OBBitVec_SetRangeOn(swigCPtr, this, lo_bit_offset, hi_bit_offset);
  }

  public void SetRangeOff(long lo_bit_offset, long hi_bit_offset) {
    openbabelJNI.OBBitVec_SetRangeOff(swigCPtr, this, lo_bit_offset, hi_bit_offset);
  }

  public void Fold(long new_bit_size) {
    openbabelJNI.OBBitVec_Fold(swigCPtr, this, new_bit_size);
  }

  public int FirstBit(long bit_offset) {
    return openbabelJNI.OBBitVec_FirstBit__SWIG_0(swigCPtr, this, bit_offset);
  }

  public int FirstBit() {
    return openbabelJNI.OBBitVec_FirstBit__SWIG_1(swigCPtr, this);
  }

  public int NextBit(int last_bit_offset) {
    return openbabelJNI.OBBitVec_NextBit(swigCPtr, this, last_bit_offset);
  }

  public int EndBit() {
    return openbabelJNI.OBBitVec_EndBit(swigCPtr, this);
  }

  public long GetSize() {
    return openbabelJNI.OBBitVec_GetSize(swigCPtr, this);
  }

  public long CountBits() {
    return openbabelJNI.OBBitVec_CountBits(swigCPtr, this);
  }

  public boolean Empty() {
    return openbabelJNI.OBBitVec_Empty(swigCPtr, this);
  }

  public boolean IsEmpty() {
    return openbabelJNI.OBBitVec_IsEmpty(swigCPtr, this);
  }

  public boolean Resize(long size_in_bits) {
    return openbabelJNI.OBBitVec_Resize(swigCPtr, this, size_in_bits);
  }

  public boolean ResizeWords(long size_in_words) {
    return openbabelJNI.OBBitVec_ResizeWords(swigCPtr, this, size_in_words);
  }

  public boolean BitIsSet(long bit_offset) {
    return openbabelJNI.OBBitVec_BitIsSet(swigCPtr, this, bit_offset);
  }

  public boolean BitIsOn(int bit_offset) {
    return openbabelJNI.OBBitVec_BitIsOn(swigCPtr, this, bit_offset);
  }

  public void FromVecInt(vectorInt bit_offsets) {
    openbabelJNI.OBBitVec_FromVecInt(swigCPtr, this, vectorInt.getCPtr(bit_offsets), bit_offsets);
  }

  public void FromString(String line, int bits) {
    openbabelJNI.OBBitVec_FromString(swigCPtr, this, line, bits);
  }

  public void ToVecInt(vectorInt bit_offsets) {
    openbabelJNI.OBBitVec_ToVecInt(swigCPtr, this, vectorInt.getCPtr(bit_offsets), bit_offsets);
  }

  public void Clear() {
    openbabelJNI.OBBitVec_Clear(swigCPtr, this);
  }

  public void Negate() {
    openbabelJNI.OBBitVec_Negate(swigCPtr, this);
  }

  public void GetWords(vectorUnsignedInt vec) {
    openbabelJNI.OBBitVec_GetWords(swigCPtr, this, vectorUnsignedInt.getCPtr(vec), vec);
  }

}
