/* ----------------------------------------------------------------------------
 * 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.
 * ----------------------------------------------------------------------------- */


using System;
using System.Runtime.InteropServices;

public class OBInternalCoord : IDisposable {
  private HandleRef swigCPtr;
  protected bool swigCMemOwn;

  internal OBInternalCoord(IntPtr cPtr, bool cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = new HandleRef(this, cPtr);
  }

  internal static HandleRef getCPtr(OBInternalCoord obj) {
    return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
  }

  ~OBInternalCoord() {
    Dispose();
  }

  public virtual void Dispose() {
    lock(this) {
      if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwn) {
        swigCMemOwn = false;
        openbabelPINVOKE.delete_OBInternalCoord(swigCPtr);
      }
      swigCPtr = new HandleRef(null, IntPtr.Zero);
      GC.SuppressFinalize(this);
    }
  }

  public OBAtom _a {
    set {
      openbabelPINVOKE.OBInternalCoord__a_set(swigCPtr, OBAtom.getCPtr(value));
    } 
    get {
      IntPtr cPtr = openbabelPINVOKE.OBInternalCoord__a_get(swigCPtr);
      OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
      return ret;
    } 
  }

  public OBAtom _b {
    set {
      openbabelPINVOKE.OBInternalCoord__b_set(swigCPtr, OBAtom.getCPtr(value));
    } 
    get {
      IntPtr cPtr = openbabelPINVOKE.OBInternalCoord__b_get(swigCPtr);
      OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
      return ret;
    } 
  }

  public OBAtom _c {
    set {
      openbabelPINVOKE.OBInternalCoord__c_set(swigCPtr, OBAtom.getCPtr(value));
    } 
    get {
      IntPtr cPtr = openbabelPINVOKE.OBInternalCoord__c_get(swigCPtr);
      OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
      return ret;
    } 
  }

  public double _dst {
    set {
      openbabelPINVOKE.OBInternalCoord__dst_set(swigCPtr, value);
    } 
    get {
      double ret = openbabelPINVOKE.OBInternalCoord__dst_get(swigCPtr);
      return ret;
    } 
  }

  public double _ang {
    set {
      openbabelPINVOKE.OBInternalCoord__ang_set(swigCPtr, value);
    } 
    get {
      double ret = openbabelPINVOKE.OBInternalCoord__ang_get(swigCPtr);
      return ret;
    } 
  }

  public double _tor {
    set {
      openbabelPINVOKE.OBInternalCoord__tor_set(swigCPtr, value);
    } 
    get {
      double ret = openbabelPINVOKE.OBInternalCoord__tor_get(swigCPtr);
      return ret;
    } 
  }

  public OBInternalCoord(OBAtom a, OBAtom b, OBAtom c, double dst, double ang, double tor) : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_0(OBAtom.getCPtr(a), OBAtom.getCPtr(b), OBAtom.getCPtr(c), dst, ang, tor), true) {
  }

  public OBInternalCoord(OBAtom a, OBAtom b, OBAtom c, double dst, double ang) : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_1(OBAtom.getCPtr(a), OBAtom.getCPtr(b), OBAtom.getCPtr(c), dst, ang), true) {
  }

  public OBInternalCoord(OBAtom a, OBAtom b, OBAtom c, double dst) : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_2(OBAtom.getCPtr(a), OBAtom.getCPtr(b), OBAtom.getCPtr(c), dst), true) {
  }

  public OBInternalCoord(OBAtom a, OBAtom b, OBAtom c) : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_3(OBAtom.getCPtr(a), OBAtom.getCPtr(b), OBAtom.getCPtr(c)), true) {
  }

  public OBInternalCoord(OBAtom a, OBAtom b) : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_4(OBAtom.getCPtr(a), OBAtom.getCPtr(b)), true) {
  }

  public OBInternalCoord(OBAtom a) : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_5(OBAtom.getCPtr(a)), true) {
  }

  public OBInternalCoord() : this(openbabelPINVOKE.new_OBInternalCoord__SWIG_6(), true) {
  }

}
