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

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

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

  ~OBMolAtomBFSIter() {
    Dispose();
  }

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

  public OBMolAtomBFSIter() : this(openbabelPINVOKE.new_OBMolAtomBFSIter__SWIG_0(), true) {
  }

  public OBMolAtomBFSIter(OBMol mol, int StartIndex) : this(openbabelPINVOKE.new_OBMolAtomBFSIter__SWIG_1(OBMol.getCPtr(mol), StartIndex), true) {
  }

  public OBMolAtomBFSIter(OBMol mol) : this(openbabelPINVOKE.new_OBMolAtomBFSIter__SWIG_2(OBMol.getCPtr(mol)), true) {
  }

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

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

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

  public int CurrentDepth() {
    int ret = openbabelPINVOKE.OBMolAtomBFSIter_CurrentDepth(swigCPtr);
    return ret;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}
