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

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

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

  ~OBAtomAtomIter() {
    Dispose();
  }

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

  public OBAtomAtomIter() : this(openbabelPINVOKE.new_OBAtomAtomIter__SWIG_0(), true) {
  }

  public OBAtomAtomIter(OBAtom atm) : this(openbabelPINVOKE.new_OBAtomAtomIter__SWIG_1(OBAtom.getCPtr(atm)), true) {
  }

  public OBAtomAtomIter(OBAtomAtomIter ai) : this(openbabelPINVOKE.new_OBAtomAtomIter__SWIG_2(OBAtomAtomIter.getCPtr(ai)), true) {
    if (openbabelPINVOKE.SWIGPendingException.Pending) throw openbabelPINVOKE.SWIGPendingException.Retrieve();
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  public void SetVector(vector3 v) {
    openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_SetVector__SWIG_1(swigCPtr, x, y, z);
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  public SWIGTYPE_p_double GetCoordinate() {
    IntPtr cPtr = openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_GetVector__SWIG_0(swigCPtr), false);
    return ret;
  }

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

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

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

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

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

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

  public OBAtom GetNextAtom() {
    IntPtr cPtr = openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_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.OBAtomAtomIter_EndBonds(swigCPtr), true);
    return ret;
  }

  public OBBond BeginBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    IntPtr cPtr = openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_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.OBAtomAtomIter_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.OBAtomAtomIter_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.OBAtomAtomIter_GetDistance__SWIG_0(swigCPtr, index);
    return ret;
  }

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

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

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

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

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

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

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

  public void InsertBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i, OBBond bond) {
    openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_DeleteBond(swigCPtr, OBBond.getCPtr(bond));
    return ret;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  public OBBase DoTransformations(SWIGTYPE_p_std__mapT_std__string_std__string_t arg0) {
    IntPtr cPtr = openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_ClassDescription(swigCPtr);
    return ret;
  }

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

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

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

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

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

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

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

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

  public OBGenericData GetData(uint type) {
    IntPtr cPtr = openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_GetData__SWIG_3(swigCPtr), false);
    return ret;
  }

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

  public vectorData GetAllData(uint type) {
    vectorData ret = new vectorData(openbabelPINVOKE.OBAtomAtomIter_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.OBAtomAtomIter_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.OBAtomAtomIter_EndData(swigCPtr), true);
    return ret;
  }

}
