/* ----------------------------------------------------------------------------
 * 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 OBResidueAtomIter : IDisposable {
  private HandleRef swigCPtr;
  protected bool swigCMemOwn;

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

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

  ~OBResidueAtomIter() {
    Dispose();
  }

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

  public OBResidueAtomIter() : this(openbabelPINVOKE.new_OBResidueAtomIter__SWIG_0(), true) {
  }

  public OBResidueAtomIter(OBResidue res) : this(openbabelPINVOKE.new_OBResidueAtomIter__SWIG_1(OBResidue.getCPtr(res)), true) {
  }

  public OBResidueAtomIter(OBResidueAtomIter ri) : this(openbabelPINVOKE.new_OBResidueAtomIter__SWIG_2(OBResidueAtomIter.getCPtr(ri)), true) {
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
  }

  public OBAtom __deref__() {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter___deref__(swigCPtr);
    OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
    return ret;
  }

  public OBAtom __ref__() {
    OBAtom ret = new OBAtom(openbabelPINVOKE.OBResidueAtomIter___ref__(swigCPtr), false);
    return ret;
  }

  public bool Visit {
    set {
      openbabelPINVOKE.OBResidueAtomIter_Visit_set(swigCPtr, value);
    } 
    get {
      bool ret = openbabelPINVOKE.OBResidueAtomIter_Visit_get(swigCPtr);
      return ret;
    } 
  }

  public void Duplicate(OBAtom arg0) {
    openbabelPINVOKE.OBResidueAtomIter_Duplicate(swigCPtr, OBAtom.getCPtr(arg0));
  }

  public void SetIdx(int idx) {
    openbabelPINVOKE.OBResidueAtomIter_SetIdx(swigCPtr, idx);
  }

  public void SetHyb(int hyb) {
    openbabelPINVOKE.OBResidueAtomIter_SetHyb(swigCPtr, hyb);
  }

  public void SetAtomicNum(int atomicnum) {
    openbabelPINVOKE.OBResidueAtomIter_SetAtomicNum(swigCPtr, atomicnum);
  }

  public void SetIsotope(uint iso) {
    openbabelPINVOKE.OBResidueAtomIter_SetIsotope(swigCPtr, iso);
  }

  public void SetImplicitValence(int val) {
    openbabelPINVOKE.OBResidueAtomIter_SetImplicitValence(swigCPtr, val);
  }

  public void IncrementImplicitValence() {
    openbabelPINVOKE.OBResidueAtomIter_IncrementImplicitValence(swigCPtr);
  }

  public void DecrementImplicitValence() {
    openbabelPINVOKE.OBResidueAtomIter_DecrementImplicitValence(swigCPtr);
  }

  public void SetFormalCharge(int fcharge) {
    openbabelPINVOKE.OBResidueAtomIter_SetFormalCharge(swigCPtr, fcharge);
  }

  public void SetSpinMultiplicity(short spin) {
    openbabelPINVOKE.OBResidueAtomIter_SetSpinMultiplicity(swigCPtr, spin);
  }

  public void SetType(string type) {
    openbabelPINVOKE.OBResidueAtomIter_SetType__SWIG_0(swigCPtr, type);
  }

  public void SetPartialCharge(double pcharge) {
    openbabelPINVOKE.OBResidueAtomIter_SetPartialCharge(swigCPtr, pcharge);
  }

  public void SetVector(vector3 v) {
    openbabelPINVOKE.OBResidueAtomIter_SetVector__SWIG_0(swigCPtr, vector3.getCPtr(v));
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
  }

  public void SetVector(double x, double y, double z) {
    openbabelPINVOKE.OBResidueAtomIter_SetVector__SWIG_1(swigCPtr, x, y, z);
  }

  public void SetVector() {
    openbabelPINVOKE.OBResidueAtomIter_SetVector__SWIG_2(swigCPtr);
  }

  public void SetCoordPtr(SWIGTYPE_p_p_double c) {
    openbabelPINVOKE.OBResidueAtomIter_SetCoordPtr(swigCPtr, SWIGTYPE_p_p_double.getCPtr(c));
  }

  public void SetResidue(OBResidue res) {
    openbabelPINVOKE.OBResidueAtomIter_SetResidue(swigCPtr, OBResidue.getCPtr(res));
  }

  public void SetParent(OBMol ptr) {
    openbabelPINVOKE.OBResidueAtomIter_SetParent(swigCPtr, OBMol.getCPtr(ptr));
  }

  public void SetAromatic() {
    openbabelPINVOKE.OBResidueAtomIter_SetAromatic(swigCPtr);
  }

  public void UnsetAromatic() {
    openbabelPINVOKE.OBResidueAtomIter_UnsetAromatic(swigCPtr);
  }

  public void SetClockwiseStereo() {
    openbabelPINVOKE.OBResidueAtomIter_SetClockwiseStereo(swigCPtr);
  }

  public void SetAntiClockwiseStereo() {
    openbabelPINVOKE.OBResidueAtomIter_SetAntiClockwiseStereo(swigCPtr);
  }

  public void SetPositiveStereo() {
    openbabelPINVOKE.OBResidueAtomIter_SetPositiveStereo(swigCPtr);
  }

  public void SetNegativeStereo() {
    openbabelPINVOKE.OBResidueAtomIter_SetNegativeStereo(swigCPtr);
  }

  public void UnsetStereo() {
    openbabelPINVOKE.OBResidueAtomIter_UnsetStereo(swigCPtr);
  }

  public void SetInRing() {
    openbabelPINVOKE.OBResidueAtomIter_SetInRing(swigCPtr);
  }

  public void SetChiral() {
    openbabelPINVOKE.OBResidueAtomIter_SetChiral(swigCPtr);
  }

  public void ClearCoordPtr() {
    openbabelPINVOKE.OBResidueAtomIter_ClearCoordPtr(swigCPtr);
  }

  public int GetFormalCharge() {
    int ret = openbabelPINVOKE.OBResidueAtomIter_GetFormalCharge(swigCPtr);
    return ret;
  }

  public uint GetAtomicNum() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetAtomicNum(swigCPtr);
    return ret;
  }

  public ushort GetIsotope() {
    ushort ret = openbabelPINVOKE.OBResidueAtomIter_GetIsotope(swigCPtr);
    return ret;
  }

  public int GetSpinMultiplicity() {
    int ret = openbabelPINVOKE.OBResidueAtomIter_GetSpinMultiplicity(swigCPtr);
    return ret;
  }

  public double GetAtomicMass() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetAtomicMass(swigCPtr);
    return ret;
  }

  public double GetExactMass() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetExactMass(swigCPtr);
    return ret;
  }

  public uint GetIdx() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetIdx(swigCPtr);
    return ret;
  }

  public uint GetCoordinateIdx() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetCoordinateIdx(swigCPtr);
    return ret;
  }

  public uint GetCIdx() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetCIdx(swigCPtr);
    return ret;
  }

  public uint GetValence() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetValence(swigCPtr);
    return ret;
  }

  public uint GetHyb() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetHyb(swigCPtr);
    return ret;
  }

  public uint GetImplicitValence() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetImplicitValence(swigCPtr);
    return ret;
  }

  public uint GetHvyValence() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetHvyValence(swigCPtr);
    return ret;
  }

  public uint GetHeteroValence() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_GetHeteroValence(swigCPtr);
    return ret;
  }

  public string GetType() {
    string ret = openbabelPINVOKE.OBResidueAtomIter_GetType(swigCPtr);
    return ret;
  }

  public double GetX() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetX(swigCPtr);
    return ret;
  }

  public double GetY() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetY(swigCPtr);
    return ret;
  }

  public double GetZ() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetZ(swigCPtr);
    return ret;
  }

  public double x() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_x(swigCPtr);
    return ret;
  }

  public double y() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_y(swigCPtr);
    return ret;
  }

  public double z() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_z(swigCPtr);
    return ret;
  }

  public SWIGTYPE_p_double GetCoordinate() {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetCoordinate(swigCPtr);
    SWIGTYPE_p_double ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_double(cPtr, false);
    return ret;
  }

  public vector3 GetVector() {
    vector3 ret = new vector3(openbabelPINVOKE.OBResidueAtomIter_GetVector__SWIG_0(swigCPtr), false);
    return ret;
  }

  public double GetPartialCharge() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetPartialCharge(swigCPtr);
    return ret;
  }

  public OBResidue GetResidue() {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetResidue__SWIG_0(swigCPtr);
    OBResidue ret = (cPtr == IntPtr.Zero) ? null : new OBResidue(cPtr, false);
    return ret;
  }

  public OBResidue GetResidue(bool perception) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetResidue__SWIG_1(swigCPtr, perception);
    OBResidue ret = (cPtr == IntPtr.Zero) ? null : new OBResidue(cPtr, false);
    return ret;
  }

  public OBMol GetParent() {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetParent(swigCPtr);
    OBMol ret = (cPtr == IntPtr.Zero) ? null : new OBMol(cPtr, false);
    return ret;
  }

  public bool GetNewBondVector(vector3 v, double length) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_GetNewBondVector(swigCPtr, vector3.getCPtr(v), length);
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public OBBond GetBond(OBAtom arg0) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetBond(swigCPtr, OBAtom.getCPtr(arg0));
    OBBond ret = (cPtr == IntPtr.Zero) ? null : new OBBond(cPtr, false);
    return ret;
  }

  public OBAtom GetNextAtom() {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetNextAtom(swigCPtr);
    OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
    return ret;
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator BeginBonds() {
    SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator ret = new SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator(openbabelPINVOKE.OBResidueAtomIter_BeginBonds(swigCPtr), true);
    return ret;
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator EndBonds() {
    SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator ret = new SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator(openbabelPINVOKE.OBResidueAtomIter_EndBonds(swigCPtr), true);
    return ret;
  }

  public OBBond BeginBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_BeginBond(swigCPtr, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i));
    OBBond ret = (cPtr == IntPtr.Zero) ? null : new OBBond(cPtr, false);
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public OBBond NextBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_NextBond(swigCPtr, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i));
    OBBond ret = (cPtr == IntPtr.Zero) ? null : new OBBond(cPtr, false);
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public OBAtom BeginNbrAtom(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_BeginNbrAtom(swigCPtr, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i));
    OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public OBAtom NextNbrAtom(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_NextNbrAtom(swigCPtr, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i));
    OBAtom ret = (cPtr == IntPtr.Zero) ? null : new OBAtom(cPtr, false);
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public double GetDistance(int index) {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetDistance__SWIG_0(swigCPtr, index);
    return ret;
  }

  public double GetDistance(OBAtom arg0) {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetDistance__SWIG_1(swigCPtr, OBAtom.getCPtr(arg0));
    return ret;
  }

  public double GetAngle(int b, int c) {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetAngle__SWIG_0(swigCPtr, b, c);
    return ret;
  }

  public double GetAngle(OBAtom b, OBAtom c) {
    double ret = openbabelPINVOKE.OBResidueAtomIter_GetAngle__SWIG_1(swigCPtr, OBAtom.getCPtr(b), OBAtom.getCPtr(c));
    return ret;
  }

  public void NewResidue() {
    openbabelPINVOKE.OBResidueAtomIter_NewResidue(swigCPtr);
  }

  public void AddResidue(OBResidue res) {
    openbabelPINVOKE.OBResidueAtomIter_AddResidue(swigCPtr, OBResidue.getCPtr(res));
  }

  public void DeleteResidue() {
    openbabelPINVOKE.OBResidueAtomIter_DeleteResidue(swigCPtr);
  }

  public void AddBond(OBBond bond) {
    openbabelPINVOKE.OBResidueAtomIter_AddBond(swigCPtr, OBBond.getCPtr(bond));
  }

  public void InsertBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i, OBBond bond) {
    openbabelPINVOKE.OBResidueAtomIter_InsertBond(swigCPtr, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i), OBBond.getCPtr(bond));
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
  }

  public bool DeleteBond(OBBond bond) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_DeleteBond(swigCPtr, OBBond.getCPtr(bond));
    return ret;
  }

  public void ClearBond() {
    openbabelPINVOKE.OBResidueAtomIter_ClearBond(swigCPtr);
  }

  public bool HtoMethyl() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HtoMethyl(swigCPtr);
    return ret;
  }

  public bool SetHybAndGeom(int arg0) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_SetHybAndGeom(swigCPtr, arg0);
    return ret;
  }

  public void ForceNoH() {
    openbabelPINVOKE.OBResidueAtomIter_ForceNoH(swigCPtr);
  }

  public bool HasNoHForced() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasNoHForced(swigCPtr);
    return ret;
  }

  public void ForceImplH() {
    openbabelPINVOKE.OBResidueAtomIter_ForceImplH(swigCPtr);
  }

  public bool HasImplHForced() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasImplHForced(swigCPtr);
    return ret;
  }

  public uint CountFreeOxygens() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_CountFreeOxygens(swigCPtr);
    return ret;
  }

  public uint ImplicitHydrogenCount() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_ImplicitHydrogenCount(swigCPtr);
    return ret;
  }

  public uint ExplicitHydrogenCount(bool ExcludeIsotopes) {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_ExplicitHydrogenCount__SWIG_0(swigCPtr, ExcludeIsotopes);
    return ret;
  }

  public uint ExplicitHydrogenCount() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_ExplicitHydrogenCount__SWIG_1(swigCPtr);
    return ret;
  }

  public uint MemberOfRingCount() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_MemberOfRingCount(swigCPtr);
    return ret;
  }

  public uint MemberOfRingSize() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_MemberOfRingSize(swigCPtr);
    return ret;
  }

  public uint CountRingBonds() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_CountRingBonds(swigCPtr);
    return ret;
  }

  public double SmallestBondAngle() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_SmallestBondAngle(swigCPtr);
    return ret;
  }

  public double AverageBondAngle() {
    double ret = openbabelPINVOKE.OBResidueAtomIter_AverageBondAngle(swigCPtr);
    return ret;
  }

  public uint BOSum() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_BOSum(swigCPtr);
    return ret;
  }

  public uint KBOSum() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_KBOSum(swigCPtr);
    return ret;
  }

  public bool HasResidue() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasResidue(swigCPtr);
    return ret;
  }

  public bool IsHydrogen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsHydrogen(swigCPtr);
    return ret;
  }

  public bool IsCarbon() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsCarbon(swigCPtr);
    return ret;
  }

  public bool IsNitrogen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsNitrogen(swigCPtr);
    return ret;
  }

  public bool IsOxygen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsOxygen(swigCPtr);
    return ret;
  }

  public bool IsSulfur() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsSulfur(swigCPtr);
    return ret;
  }

  public bool IsPhosphorus() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsPhosphorus(swigCPtr);
    return ret;
  }

  public bool IsAromatic() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsAromatic(swigCPtr);
    return ret;
  }

  public bool IsInRing() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsInRing(swigCPtr);
    return ret;
  }

  public bool IsInRingSize(int arg0) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsInRingSize(swigCPtr, arg0);
    return ret;
  }

  public bool IsHeteroatom() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsHeteroatom(swigCPtr);
    return ret;
  }

  public bool IsNotCorH() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsNotCorH(swigCPtr);
    return ret;
  }

  public bool IsConnected(OBAtom arg0) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsConnected(swigCPtr, OBAtom.getCPtr(arg0));
    return ret;
  }

  public bool IsOneThree(OBAtom arg0) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsOneThree(swigCPtr, OBAtom.getCPtr(arg0));
    return ret;
  }

  public bool IsOneFour(OBAtom arg0) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsOneFour(swigCPtr, OBAtom.getCPtr(arg0));
    return ret;
  }

  public bool IsCarboxylOxygen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsCarboxylOxygen(swigCPtr);
    return ret;
  }

  public bool IsPhosphateOxygen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsPhosphateOxygen(swigCPtr);
    return ret;
  }

  public bool IsSulfateOxygen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsSulfateOxygen(swigCPtr);
    return ret;
  }

  public bool IsNitroOxygen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsNitroOxygen(swigCPtr);
    return ret;
  }

  public bool IsAmideNitrogen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsAmideNitrogen(swigCPtr);
    return ret;
  }

  public bool IsPolarHydrogen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsPolarHydrogen(swigCPtr);
    return ret;
  }

  public bool IsNonPolarHydrogen() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsNonPolarHydrogen(swigCPtr);
    return ret;
  }

  public bool IsAromaticNOxide() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsAromaticNOxide(swigCPtr);
    return ret;
  }

  public bool IsChiral() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsChiral(swigCPtr);
    return ret;
  }

  public bool IsAxial() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsAxial(swigCPtr);
    return ret;
  }

  public bool IsClockwise() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsClockwise(swigCPtr);
    return ret;
  }

  public bool IsAntiClockwise() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsAntiClockwise(swigCPtr);
    return ret;
  }

  public bool IsPositiveStereo() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsPositiveStereo(swigCPtr);
    return ret;
  }

  public bool IsNegativeStereo() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsNegativeStereo(swigCPtr);
    return ret;
  }

  public bool HasChiralitySpecified() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasChiralitySpecified(swigCPtr);
    return ret;
  }

  public bool HasChiralVolume() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasChiralVolume(swigCPtr);
    return ret;
  }

  public bool IsHbondAcceptor() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsHbondAcceptor(swigCPtr);
    return ret;
  }

  public bool IsHbondDonor() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsHbondDonor(swigCPtr);
    return ret;
  }

  public bool IsHbondDonorH() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_IsHbondDonorH(swigCPtr);
    return ret;
  }

  public bool HasAlphaBetaUnsat(bool includePandS) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasAlphaBetaUnsat__SWIG_0(swigCPtr, includePandS);
    return ret;
  }

  public bool HasAlphaBetaUnsat() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasAlphaBetaUnsat__SWIG_1(swigCPtr);
    return ret;
  }

  public bool HasBondOfOrder(uint bo) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasBondOfOrder(swigCPtr, bo);
    return ret;
  }

  public int CountBondsOfOrder(uint bo) {
    int ret = openbabelPINVOKE.OBResidueAtomIter_CountBondsOfOrder(swigCPtr, bo);
    return ret;
  }

  public bool HasNonSingleBond() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasNonSingleBond(swigCPtr);
    return ret;
  }

  public bool HasSingleBond() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasSingleBond(swigCPtr);
    return ret;
  }

  public bool HasDoubleBond() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasDoubleBond(swigCPtr);
    return ret;
  }

  public bool HasAromaticBond() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasAromaticBond(swigCPtr);
    return ret;
  }

  public bool MatchesSMARTS(string arg0) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_MatchesSMARTS(swigCPtr, arg0);
    return ret;
  }

  public bool Clear() {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_Clear(swigCPtr);
    return ret;
  }

  public OBBase DoTransformations(SWIGTYPE_p_std__mapT_std__string_std__string_t arg0) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_DoTransformations(swigCPtr, SWIGTYPE_p_std__mapT_std__string_std__string_t.getCPtr(arg0));
    OBBase ret = (cPtr == IntPtr.Zero) ? null : new OBBase(cPtr, false);
    return ret;
  }

  public string ClassDescription() {
    string ret = openbabelPINVOKE.OBResidueAtomIter_ClassDescription(swigCPtr);
    return ret;
  }

  public bool HasData(uint type) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_HasData__SWIG_2(swigCPtr, type);
    return ret;
  }

  public void DeleteData(uint type) {
    openbabelPINVOKE.OBResidueAtomIter_DeleteData__SWIG_0(swigCPtr, type);
  }

  public void DeleteData(OBGenericData arg0) {
    openbabelPINVOKE.OBResidueAtomIter_DeleteData__SWIG_1(swigCPtr, OBGenericData.getCPtr(arg0));
  }

  public void DeleteData(vectorData arg0) {
    openbabelPINVOKE.OBResidueAtomIter_DeleteData__SWIG_2(swigCPtr, vectorData.getCPtr(arg0));
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
  }

  public bool DeleteData(string s) {
    bool ret = openbabelPINVOKE.OBResidueAtomIter_DeleteData__SWIG_3(swigCPtr, s);
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public void SetData(OBGenericData d) {
    openbabelPINVOKE.OBResidueAtomIter_SetData(swigCPtr, OBGenericData.getCPtr(d));
  }

  public void CloneData(OBGenericData d) {
    openbabelPINVOKE.OBResidueAtomIter_CloneData(swigCPtr, OBGenericData.getCPtr(d));
  }

  public uint DataSize() {
    uint ret = openbabelPINVOKE.OBResidueAtomIter_DataSize(swigCPtr);
    return ret;
  }

  public OBGenericData GetData(uint type) {
    IntPtr cPtr = openbabelPINVOKE.OBResidueAtomIter_GetData__SWIG_0(swigCPtr, type);
    OBGenericData ret = (cPtr == IntPtr.Zero) ? null : new OBGenericData(cPtr, false);
    return ret;
  }

  public vectorData GetData() {
    vectorData ret = new vectorData(openbabelPINVOKE.OBResidueAtomIter_GetData__SWIG_3(swigCPtr), false);
    return ret;
  }

  public vectorData GetData(DataOrigin source) {
    vectorData ret = new vectorData(openbabelPINVOKE.OBResidueAtomIter_GetData__SWIG_4(swigCPtr, (int)source), true);
    return ret;
  }

  public vectorData GetAllData(uint type) {
    vectorData ret = new vectorData(openbabelPINVOKE.OBResidueAtomIter_GetAllData(swigCPtr, type), true);
    return ret;
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBGenericData_p_t__iterator BeginData() {
    SWIGTYPE_p_std__vectorT_OpenBabel__OBGenericData_p_t__iterator ret = new SWIGTYPE_p_std__vectorT_OpenBabel__OBGenericData_p_t__iterator(openbabelPINVOKE.OBResidueAtomIter_BeginData(swigCPtr), true);
    return ret;
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBGenericData_p_t__iterator EndData() {
    SWIGTYPE_p_std__vectorT_OpenBabel__OBGenericData_p_t__iterator ret = new SWIGTYPE_p_std__vectorT_OpenBabel__OBGenericData_p_t__iterator(openbabelPINVOKE.OBResidueAtomIter_EndData(swigCPtr), true);
    return ret;
  }

}
