/* ----------------------------------------------------------------------------
 * 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 OBFFConstraints {
  private long swigCPtr;
  protected boolean swigCMemOwn;

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

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

  protected void finalize() {
    delete();
  }

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

  public OBFFConstraints() {
    this(openbabelJNI.new_OBFFConstraints(), true);
  }

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

  public double GetConstraintEnergy() {
    return openbabelJNI.OBFFConstraints_GetConstraintEnergy(swigCPtr, this);
  }

  public vector3 GetGradient(int a) {
    return new vector3(openbabelJNI.OBFFConstraints_GetGradient(swigCPtr, this, a), true);
  }

  public void Setup(OBMol mol) {
    openbabelJNI.OBFFConstraints_Setup(swigCPtr, this, OBMol.getCPtr(mol), mol);
  }

  public void SetFactor(double factor) {
    openbabelJNI.OBFFConstraints_SetFactor(swigCPtr, this, factor);
  }

  public void AddIgnore(int a) {
    openbabelJNI.OBFFConstraints_AddIgnore(swigCPtr, this, a);
  }

  public void AddAtomConstraint(int a) {
    openbabelJNI.OBFFConstraints_AddAtomConstraint(swigCPtr, this, a);
  }

  public void AddAtomXConstraint(int a) {
    openbabelJNI.OBFFConstraints_AddAtomXConstraint(swigCPtr, this, a);
  }

  public void AddAtomYConstraint(int a) {
    openbabelJNI.OBFFConstraints_AddAtomYConstraint(swigCPtr, this, a);
  }

  public void AddAtomZConstraint(int a) {
    openbabelJNI.OBFFConstraints_AddAtomZConstraint(swigCPtr, this, a);
  }

  public void AddDistanceConstraint(int a, int b, double length) {
    openbabelJNI.OBFFConstraints_AddDistanceConstraint(swigCPtr, this, a, b, length);
  }

  public void AddAngleConstraint(int a, int b, int c, double angle) {
    openbabelJNI.OBFFConstraints_AddAngleConstraint(swigCPtr, this, a, b, c, angle);
  }

  public void AddTorsionConstraint(int a, int b, int c, int d, double torsion) {
    openbabelJNI.OBFFConstraints_AddTorsionConstraint(swigCPtr, this, a, b, c, d, torsion);
  }

  public void DeleteConstraint(int index) {
    openbabelJNI.OBFFConstraints_DeleteConstraint(swigCPtr, this, index);
  }

  public double GetFactor() {
    return openbabelJNI.OBFFConstraints_GetFactor(swigCPtr, this);
  }

  public int Size() {
    return openbabelJNI.OBFFConstraints_Size(swigCPtr, this);
  }

  public int GetConstraintType(int index) {
    return openbabelJNI.OBFFConstraints_GetConstraintType(swigCPtr, this, index);
  }

  public double GetConstraintValue(int index) {
    return openbabelJNI.OBFFConstraints_GetConstraintValue(swigCPtr, this, index);
  }

  public int GetConstraintAtomA(int index) {
    return openbabelJNI.OBFFConstraints_GetConstraintAtomA(swigCPtr, this, index);
  }

  public int GetConstraintAtomB(int index) {
    return openbabelJNI.OBFFConstraints_GetConstraintAtomB(swigCPtr, this, index);
  }

  public int GetConstraintAtomC(int index) {
    return openbabelJNI.OBFFConstraints_GetConstraintAtomC(swigCPtr, this, index);
  }

  public int GetConstraintAtomD(int index) {
    return openbabelJNI.OBFFConstraints_GetConstraintAtomD(swigCPtr, this, index);
  }

  public boolean IsIgnored(int a) {
    return openbabelJNI.OBFFConstraints_IsIgnored(swigCPtr, this, a);
  }

  public boolean IsFixed(int a) {
    return openbabelJNI.OBFFConstraints_IsFixed(swigCPtr, this, a);
  }

  public boolean IsXFixed(int a) {
    return openbabelJNI.OBFFConstraints_IsXFixed(swigCPtr, this, a);
  }

  public boolean IsYFixed(int a) {
    return openbabelJNI.OBFFConstraints_IsYFixed(swigCPtr, this, a);
  }

  public boolean IsZFixed(int a) {
    return openbabelJNI.OBFFConstraints_IsZFixed(swigCPtr, this, a);
  }

  public OBBitVec GetIgnoredBitVec() {
    return new OBBitVec(openbabelJNI.OBFFConstraints_GetIgnoredBitVec(swigCPtr, this), true);
  }

}
