/* ----------------------------------------------------------------------------
 * 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 OBMol extends OBBase {
  private long swigCPtr;

  protected OBMol(long cPtr, boolean cMemoryOwn) {
    super(openbabelJNI.SWIGOBMolUpcast(cPtr), cMemoryOwn);
    swigCPtr = cPtr;
  }

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

  protected void finalize() {
    delete();
  }

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

  public OBMol() {
    this(openbabelJNI.new_OBMol__SWIG_0(), true);
  }

  public OBMol(OBMol arg0) {
    this(openbabelJNI.new_OBMol__SWIG_1(OBMol.getCPtr(arg0), arg0), true);
  }

  public void ReserveAtoms(int natoms) {
    openbabelJNI.OBMol_ReserveAtoms(swigCPtr, this, natoms);
  }

  public OBAtom CreateAtom() {
    long cPtr = openbabelJNI.OBMol_CreateAtom(swigCPtr, this);
    return (cPtr == 0) ? null : new OBAtom(cPtr, false);
  }

  public OBBond CreateBond() {
    long cPtr = openbabelJNI.OBMol_CreateBond(swigCPtr, this);
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBResidue CreateResidue() {
    long cPtr = openbabelJNI.OBMol_CreateResidue(swigCPtr, this);
    return (cPtr == 0) ? null : new OBResidue(cPtr, false);
  }

  public void DestroyAtom(OBAtom arg0) {
    openbabelJNI.OBMol_DestroyAtom(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public void DestroyBond(OBBond arg0) {
    openbabelJNI.OBMol_DestroyBond(swigCPtr, this, OBBond.getCPtr(arg0), arg0);
  }

  public void DestroyResidue(OBResidue arg0) {
    openbabelJNI.OBMol_DestroyResidue(swigCPtr, this, OBResidue.getCPtr(arg0), arg0);
  }

  public boolean AddAtom(OBAtom arg0) {
    return openbabelJNI.OBMol_AddAtom(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public boolean InsertAtom(OBAtom arg0) {
    return openbabelJNI.OBMol_InsertAtom(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public boolean AddBond(int beginIdx, int endIdx, int order, int flags, int insertpos) {
    return openbabelJNI.OBMol_AddBond__SWIG_0(swigCPtr, this, beginIdx, endIdx, order, flags, insertpos);
  }

  public boolean AddBond(int beginIdx, int endIdx, int order, int flags) {
    return openbabelJNI.OBMol_AddBond__SWIG_1(swigCPtr, this, beginIdx, endIdx, order, flags);
  }

  public boolean AddBond(int beginIdx, int endIdx, int order) {
    return openbabelJNI.OBMol_AddBond__SWIG_2(swigCPtr, this, beginIdx, endIdx, order);
  }

  public boolean AddBond(OBBond arg0) {
    return openbabelJNI.OBMol_AddBond__SWIG_3(swigCPtr, this, OBBond.getCPtr(arg0), arg0);
  }

  public boolean AddResidue(OBResidue arg0) {
    return openbabelJNI.OBMol_AddResidue(swigCPtr, this, OBResidue.getCPtr(arg0), arg0);
  }

  public OBAtom NewAtom() {
    long cPtr = openbabelJNI.OBMol_NewAtom(swigCPtr, this);
    return (cPtr == 0) ? null : new OBAtom(cPtr, false);
  }

  public OBBond NewBond() {
    long cPtr = openbabelJNI.OBMol_NewBond(swigCPtr, this);
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBResidue NewResidue() {
    long cPtr = openbabelJNI.OBMol_NewResidue(swigCPtr, this);
    return (cPtr == 0) ? null : new OBResidue(cPtr, false);
  }

  public boolean DeleteAtom(OBAtom arg0, boolean destroyAtom) {
    return openbabelJNI.OBMol_DeleteAtom__SWIG_0(swigCPtr, this, OBAtom.getCPtr(arg0), arg0, destroyAtom);
  }

  public boolean DeleteAtom(OBAtom arg0) {
    return openbabelJNI.OBMol_DeleteAtom__SWIG_1(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public boolean DeleteBond(OBBond arg0, boolean destroyBond) {
    return openbabelJNI.OBMol_DeleteBond__SWIG_0(swigCPtr, this, OBBond.getCPtr(arg0), arg0, destroyBond);
  }

  public boolean DeleteBond(OBBond arg0) {
    return openbabelJNI.OBMol_DeleteBond__SWIG_1(swigCPtr, this, OBBond.getCPtr(arg0), arg0);
  }

  public boolean DeleteResidue(OBResidue arg0, boolean destroyResidue) {
    return openbabelJNI.OBMol_DeleteResidue__SWIG_0(swigCPtr, this, OBResidue.getCPtr(arg0), arg0, destroyResidue);
  }

  public boolean DeleteResidue(OBResidue arg0) {
    return openbabelJNI.OBMol_DeleteResidue__SWIG_1(swigCPtr, this, OBResidue.getCPtr(arg0), arg0);
  }

  public void BeginModify() {
    openbabelJNI.OBMol_BeginModify(swigCPtr, this);
  }

  public void EndModify(boolean nukePerceivedData) {
    openbabelJNI.OBMol_EndModify__SWIG_0(swigCPtr, this, nukePerceivedData);
  }

  public void EndModify() {
    openbabelJNI.OBMol_EndModify__SWIG_1(swigCPtr, this);
  }

  public int GetMod() {
    return openbabelJNI.OBMol_GetMod(swigCPtr, this);
  }

  public void IncrementMod() {
    openbabelJNI.OBMol_IncrementMod(swigCPtr, this);
  }

  public void DecrementMod() {
    openbabelJNI.OBMol_DecrementMod(swigCPtr, this);
  }

  public int GetFlags() {
    return openbabelJNI.OBMol_GetFlags(swigCPtr, this);
  }

  public String GetTitle(boolean replaceNewlines) {
    return openbabelJNI.OBMol_GetTitle__SWIG_0(swigCPtr, this, replaceNewlines);
  }

  public String GetTitle() {
    return openbabelJNI.OBMol_GetTitle__SWIG_1(swigCPtr, this);
  }

  public long NumAtoms() {
    return openbabelJNI.OBMol_NumAtoms(swigCPtr, this);
  }

  public long NumBonds() {
    return openbabelJNI.OBMol_NumBonds(swigCPtr, this);
  }

  public long NumHvyAtoms() {
    return openbabelJNI.OBMol_NumHvyAtoms(swigCPtr, this);
  }

  public long NumResidues() {
    return openbabelJNI.OBMol_NumResidues(swigCPtr, this);
  }

  public long NumRotors() {
    return openbabelJNI.OBMol_NumRotors(swigCPtr, this);
  }

  public OBAtom GetAtom(int idx) {
    long cPtr = openbabelJNI.OBMol_GetAtom(swigCPtr, this, idx);
    return (cPtr == 0) ? null : new OBAtom(cPtr, false);
  }

  public OBAtom GetFirstAtom() {
    long cPtr = openbabelJNI.OBMol_GetFirstAtom(swigCPtr, this);
    return (cPtr == 0) ? null : new OBAtom(cPtr, false);
  }

  public OBBond GetBond(int idx) {
    long cPtr = openbabelJNI.OBMol_GetBond__SWIG_0(swigCPtr, this, idx);
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBBond GetBond(int a, int b) {
    long cPtr = openbabelJNI.OBMol_GetBond__SWIG_1(swigCPtr, this, a, b);
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBBond GetBond(OBAtom bgn, OBAtom end) {
    long cPtr = openbabelJNI.OBMol_GetBond__SWIG_2(swigCPtr, this, OBAtom.getCPtr(bgn), bgn, OBAtom.getCPtr(end), end);
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBResidue GetResidue(int idx) {
    long cPtr = openbabelJNI.OBMol_GetResidue(swigCPtr, this, idx);
    return (cPtr == 0) ? null : new OBResidue(cPtr, false);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t GetInternalCoord() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t(openbabelJNI.OBMol_GetInternalCoord(swigCPtr, this), true);
  }

  public double GetTorsion(int arg0, int arg1, int arg2, int arg3) {
    return openbabelJNI.OBMol_GetTorsion__SWIG_0(swigCPtr, this, arg0, arg1, arg2, arg3);
  }

  public double GetTorsion(OBAtom a, OBAtom b, OBAtom c, OBAtom d) {
    return openbabelJNI.OBMol_GetTorsion__SWIG_1(swigCPtr, this, OBAtom.getCPtr(a), a, OBAtom.getCPtr(b), b, OBAtom.getCPtr(c), c, OBAtom.getCPtr(d), d);
  }

  public double GetAngle(OBAtom a, OBAtom b, OBAtom c) {
    return openbabelJNI.OBMol_GetAngle(swigCPtr, this, OBAtom.getCPtr(a), a, OBAtom.getCPtr(b), b, OBAtom.getCPtr(c), c);
  }

  public String GetFormula() {
    return openbabelJNI.OBMol_GetFormula(swigCPtr, this);
  }

  public String GetSpacedFormula(int ones, String sp, boolean implicitH) {
    return openbabelJNI.OBMol_GetSpacedFormula__SWIG_0(swigCPtr, this, ones, sp, implicitH);
  }

  public String GetSpacedFormula(int ones, String sp) {
    return openbabelJNI.OBMol_GetSpacedFormula__SWIG_1(swigCPtr, this, ones, sp);
  }

  public String GetSpacedFormula(int ones) {
    return openbabelJNI.OBMol_GetSpacedFormula__SWIG_2(swigCPtr, this, ones);
  }

  public String GetSpacedFormula() {
    return openbabelJNI.OBMol_GetSpacedFormula__SWIG_3(swigCPtr, this);
  }

  public double GetEnergy() {
    return openbabelJNI.OBMol_GetEnergy__SWIG_0(swigCPtr, this);
  }

  public double GetMolWt(boolean implicitH) {
    return openbabelJNI.OBMol_GetMolWt__SWIG_0(swigCPtr, this, implicitH);
  }

  public double GetMolWt() {
    return openbabelJNI.OBMol_GetMolWt__SWIG_1(swigCPtr, this);
  }

  public double GetExactMass(boolean implicitH) {
    return openbabelJNI.OBMol_GetExactMass__SWIG_0(swigCPtr, this, implicitH);
  }

  public double GetExactMass() {
    return openbabelJNI.OBMol_GetExactMass__SWIG_1(swigCPtr, this);
  }

  public int GetTotalCharge() {
    return openbabelJNI.OBMol_GetTotalCharge(swigCPtr, this);
  }

  public long GetTotalSpinMultiplicity() {
    return openbabelJNI.OBMol_GetTotalSpinMultiplicity(swigCPtr, this);
  }

  public int GetDimension() {
    return openbabelJNI.OBMol_GetDimension(swigCPtr, this);
  }

  public SWIGTYPE_p_double GetCoordinates() {
    long cPtr = openbabelJNI.OBMol_GetCoordinates(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_double(cPtr, false);
  }

  public vectorpRing GetSSSR() {
    return new vectorpRing(openbabelJNI.OBMol_GetSSSR(swigCPtr, this), false);
  }

  public boolean AutomaticFormalCharge() {
    return openbabelJNI.OBMol_AutomaticFormalCharge(swigCPtr, this);
  }

  public boolean AutomaticPartialCharge() {
    return openbabelJNI.OBMol_AutomaticPartialCharge(swigCPtr, this);
  }

  public void SetTitle(String title) {
    openbabelJNI.OBMol_SetTitle__SWIG_0(swigCPtr, this, title);
  }

  public void SetTitle(SWIGTYPE_p_std__string title) {
    openbabelJNI.OBMol_SetTitle__SWIG_1(swigCPtr, this, SWIGTYPE_p_std__string.getCPtr(title));
  }

  public void SetFormula(String molFormula) {
    openbabelJNI.OBMol_SetFormula(swigCPtr, this, molFormula);
  }

  public void SetEnergy(double energy) {
    openbabelJNI.OBMol_SetEnergy(swigCPtr, this, energy);
  }

  public void SetDimension(int d) {
    openbabelJNI.OBMol_SetDimension(swigCPtr, this, d);
  }

  public void SetTotalCharge(int charge) {
    openbabelJNI.OBMol_SetTotalCharge(swigCPtr, this, charge);
  }

  public void SetTotalSpinMultiplicity(long spinMultiplicity) {
    openbabelJNI.OBMol_SetTotalSpinMultiplicity(swigCPtr, this, spinMultiplicity);
  }

  public void SetInternalCoord(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t int_coord) {
    openbabelJNI.OBMol_SetInternalCoord(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t.getCPtr(int_coord));
  }

  public void SetAutomaticFormalCharge(boolean val) {
    openbabelJNI.OBMol_SetAutomaticFormalCharge(swigCPtr, this, val);
  }

  public void SetAutomaticPartialCharge(boolean val) {
    openbabelJNI.OBMol_SetAutomaticPartialCharge(swigCPtr, this, val);
  }

  public void SetAromaticPerceived() {
    openbabelJNI.OBMol_SetAromaticPerceived(swigCPtr, this);
  }

  public void SetSSSRPerceived() {
    openbabelJNI.OBMol_SetSSSRPerceived(swigCPtr, this);
  }

  public void SetRingAtomsAndBondsPerceived() {
    openbabelJNI.OBMol_SetRingAtomsAndBondsPerceived(swigCPtr, this);
  }

  public void SetAtomTypesPerceived() {
    openbabelJNI.OBMol_SetAtomTypesPerceived(swigCPtr, this);
  }

  public void SetRingTypesPerceived() {
    openbabelJNI.OBMol_SetRingTypesPerceived(swigCPtr, this);
  }

  public void SetChainsPerceived() {
    openbabelJNI.OBMol_SetChainsPerceived(swigCPtr, this);
  }

  public void SetChiralityPerceived() {
    openbabelJNI.OBMol_SetChiralityPerceived(swigCPtr, this);
  }

  public void SetPartialChargesPerceived() {
    openbabelJNI.OBMol_SetPartialChargesPerceived(swigCPtr, this);
  }

  public void SetHybridizationPerceived() {
    openbabelJNI.OBMol_SetHybridizationPerceived(swigCPtr, this);
  }

  public void SetImplicitValencePerceived() {
    openbabelJNI.OBMol_SetImplicitValencePerceived(swigCPtr, this);
  }

  public void SetKekulePerceived() {
    openbabelJNI.OBMol_SetKekulePerceived(swigCPtr, this);
  }

  public void SetClosureBondsPerceived() {
    openbabelJNI.OBMol_SetClosureBondsPerceived(swigCPtr, this);
  }

  public void SetHydrogensAdded() {
    openbabelJNI.OBMol_SetHydrogensAdded(swigCPtr, this);
  }

  public void SetCorrectedForPH() {
    openbabelJNI.OBMol_SetCorrectedForPH(swigCPtr, this);
  }

  public void SetAromaticCorrected() {
    openbabelJNI.OBMol_SetAromaticCorrected(swigCPtr, this);
  }

  public void SetSpinMultiplicityAssigned() {
    openbabelJNI.OBMol_SetSpinMultiplicityAssigned(swigCPtr, this);
  }

  public void SetFlags(int flags) {
    openbabelJNI.OBMol_SetFlags(swigCPtr, this, flags);
  }

  public void UnsetAromaticPerceived() {
    openbabelJNI.OBMol_UnsetAromaticPerceived(swigCPtr, this);
  }

  public void UnsetSSSRPerceived() {
    openbabelJNI.OBMol_UnsetSSSRPerceived(swigCPtr, this);
  }

  public void UnsetRingTypesPerceived() {
    openbabelJNI.OBMol_UnsetRingTypesPerceived(swigCPtr, this);
  }

  public void UnsetPartialChargesPerceived() {
    openbabelJNI.OBMol_UnsetPartialChargesPerceived(swigCPtr, this);
  }

  public void UnsetImplicitValencePerceived() {
    openbabelJNI.OBMol_UnsetImplicitValencePerceived(swigCPtr, this);
  }

  public void UnsetHydrogensAdded() {
    openbabelJNI.OBMol_UnsetHydrogensAdded(swigCPtr, this);
  }

  public void UnsetFlag(int flag) {
    openbabelJNI.OBMol_UnsetFlag(swigCPtr, this, flag);
  }

  public static String ClassDescription() {
    return openbabelJNI.OBMol_ClassDescription();
  }

  public void RenumberAtoms(SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t arg0) {
    openbabelJNI.OBMol_RenumberAtoms(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t.getCPtr(arg0));
  }

  public void SetCoordinates(SWIGTYPE_p_double c) {
    openbabelJNI.OBMol_SetCoordinates(swigCPtr, this, SWIGTYPE_p_double.getCPtr(c));
  }

  public void ToInertialFrame(int conf, SWIGTYPE_p_double rmat) {
    openbabelJNI.OBMol_ToInertialFrame__SWIG_0(swigCPtr, this, conf, SWIGTYPE_p_double.getCPtr(rmat));
  }

  public void ToInertialFrame() {
    openbabelJNI.OBMol_ToInertialFrame__SWIG_1(swigCPtr, this);
  }

  public void Translate(vector3 v) {
    openbabelJNI.OBMol_Translate__SWIG_0(swigCPtr, this, vector3.getCPtr(v), v);
  }

  public void Translate(vector3 v, int conf) {
    openbabelJNI.OBMol_Translate__SWIG_1(swigCPtr, this, vector3.getCPtr(v), v, conf);
  }

  public void Rotate(SWIGTYPE_p_a_3__double u) {
    openbabelJNI.OBMol_Rotate__SWIG_0(swigCPtr, this, SWIGTYPE_p_a_3__double.getCPtr(u));
  }

  public void Rotate(SWIGTYPE_p_double m) {
    openbabelJNI.OBMol_Rotate__SWIG_1(swigCPtr, this, SWIGTYPE_p_double.getCPtr(m));
  }

  public void Rotate(SWIGTYPE_p_double m, int nconf) {
    openbabelJNI.OBMol_Rotate__SWIG_2(swigCPtr, this, SWIGTYPE_p_double.getCPtr(m), nconf);
  }

  public void Center() {
    openbabelJNI.OBMol_Center__SWIG_0(swigCPtr, this);
  }

  public boolean Kekulize() {
    return openbabelJNI.OBMol_Kekulize(swigCPtr, this);
  }

  public boolean PerceiveKekuleBonds() {
    return openbabelJNI.OBMol_PerceiveKekuleBonds(swigCPtr, this);
  }

  public void NewPerceiveKekuleBonds() {
    openbabelJNI.OBMol_NewPerceiveKekuleBonds(swigCPtr, this);
  }

  public boolean DeleteHydrogens() {
    return openbabelJNI.OBMol_DeleteHydrogens__SWIG_0(swigCPtr, this);
  }

  public boolean DeleteHydrogens(OBAtom arg0) {
    return openbabelJNI.OBMol_DeleteHydrogens__SWIG_1(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public boolean DeleteNonPolarHydrogens() {
    return openbabelJNI.OBMol_DeleteNonPolarHydrogens(swigCPtr, this);
  }

  public boolean DeleteHydrogen(OBAtom arg0) {
    return openbabelJNI.OBMol_DeleteHydrogen(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public boolean AddHydrogens(boolean polaronly, boolean correctForPH, double pH) {
    return openbabelJNI.OBMol_AddHydrogens__SWIG_0(swigCPtr, this, polaronly, correctForPH, pH);
  }

  public boolean AddHydrogens(boolean polaronly, boolean correctForPH) {
    return openbabelJNI.OBMol_AddHydrogens__SWIG_1(swigCPtr, this, polaronly, correctForPH);
  }

  public boolean AddHydrogens(boolean polaronly) {
    return openbabelJNI.OBMol_AddHydrogens__SWIG_2(swigCPtr, this, polaronly);
  }

  public boolean AddHydrogens() {
    return openbabelJNI.OBMol_AddHydrogens__SWIG_3(swigCPtr, this);
  }

  public boolean AddHydrogens(OBAtom arg0) {
    return openbabelJNI.OBMol_AddHydrogens__SWIG_4(swigCPtr, this, OBAtom.getCPtr(arg0), arg0);
  }

  public boolean AddPolarHydrogens() {
    return openbabelJNI.OBMol_AddPolarHydrogens(swigCPtr, this);
  }

  public boolean StripSalts(int threshold) {
    return openbabelJNI.OBMol_StripSalts(swigCPtr, this, threshold);
  }

  public vectorMol Separate(int StartIndex) {
    return new vectorMol(openbabelJNI.OBMol_Separate__SWIG_0(swigCPtr, this, StartIndex), true);
  }

  public vectorMol Separate() {
    return new vectorMol(openbabelJNI.OBMol_Separate__SWIG_1(swigCPtr, this), true);
  }

  public boolean GetNextFragment(OBMolAtomDFSIter iter, OBMol newMol) {
    return openbabelJNI.OBMol_GetNextFragment(swigCPtr, this, OBMolAtomDFSIter.getCPtr(iter), iter, OBMol.getCPtr(newMol), newMol);
  }

  public boolean ConvertDativeBonds() {
    return openbabelJNI.OBMol_ConvertDativeBonds(swigCPtr, this);
  }

  public boolean CorrectForPH(double pH) {
    return openbabelJNI.OBMol_CorrectForPH__SWIG_0(swigCPtr, this, pH);
  }

  public boolean CorrectForPH() {
    return openbabelJNI.OBMol_CorrectForPH__SWIG_1(swigCPtr, this);
  }

  public boolean AssignSpinMultiplicity(boolean NoImplicitH) {
    return openbabelJNI.OBMol_AssignSpinMultiplicity__SWIG_0(swigCPtr, this, NoImplicitH);
  }

  public boolean AssignSpinMultiplicity() {
    return openbabelJNI.OBMol_AssignSpinMultiplicity__SWIG_1(swigCPtr, this);
  }

  public vector3 Center(int nconf) {
    return new vector3(openbabelJNI.OBMol_Center__SWIG_1(swigCPtr, this, nconf), true);
  }

  public void SetTorsion(OBAtom arg0, OBAtom arg1, OBAtom arg2, OBAtom arg3, double ang) {
    openbabelJNI.OBMol_SetTorsion(swigCPtr, this, OBAtom.getCPtr(arg0), arg0, OBAtom.getCPtr(arg1), arg1, OBAtom.getCPtr(arg2), arg2, OBAtom.getCPtr(arg3), arg3, ang);
  }

  public void FindSSSR() {
    openbabelJNI.OBMol_FindSSSR(swigCPtr, this);
  }

  public void FindRingAtomsAndBonds() {
    openbabelJNI.OBMol_FindRingAtomsAndBonds(swigCPtr, this);
  }

  public void FindChiralCenters() {
    openbabelJNI.OBMol_FindChiralCenters(swigCPtr, this);
  }

  public void FindChildren(vectorInt children, int bgnIdx, int endIdx) {
    openbabelJNI.OBMol_FindChildren__SWIG_0(swigCPtr, this, vectorInt.getCPtr(children), children, bgnIdx, endIdx);
  }

  public void FindChildren(SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t children, OBAtom bgn, OBAtom end) {
    openbabelJNI.OBMol_FindChildren__SWIG_1(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t.getCPtr(children), OBAtom.getCPtr(bgn), bgn, OBAtom.getCPtr(end), end);
  }

  public void FindLargestFragment(OBBitVec frag) {
    openbabelJNI.OBMol_FindLargestFragment(swigCPtr, this, OBBitVec.getCPtr(frag), frag);
  }

  public void ContigFragList(vvInt arg0) {
    openbabelJNI.OBMol_ContigFragList(swigCPtr, this, vvInt.getCPtr(arg0), arg0);
  }

  public void Align(OBAtom arg0, OBAtom arg1, vector3 arg2, vector3 arg3) {
    openbabelJNI.OBMol_Align(swigCPtr, this, OBAtom.getCPtr(arg0), arg0, OBAtom.getCPtr(arg1), arg1, vector3.getCPtr(arg2), arg2, vector3.getCPtr(arg3), arg3);
  }

  public void ConnectTheDots() {
    openbabelJNI.OBMol_ConnectTheDots(swigCPtr, this);
  }

  public void PerceiveBondOrders() {
    openbabelJNI.OBMol_PerceiveBondOrders(swigCPtr, this);
  }

  public void FindAngles() {
    openbabelJNI.OBMol_FindAngles(swigCPtr, this);
  }

  public void FindTorsions() {
    openbabelJNI.OBMol_FindTorsions(swigCPtr, this);
  }

  public boolean GetGTDVector(vectorInt arg0) {
    return openbabelJNI.OBMol_GetGTDVector(swigCPtr, this, vectorInt.getCPtr(arg0), arg0);
  }

  public void GetGIVector(vectorUnsignedInt arg0) {
    openbabelJNI.OBMol_GetGIVector(swigCPtr, this, vectorUnsignedInt.getCPtr(arg0), arg0);
  }

  public void GetGIDVector(vectorUnsignedInt arg0) {
    openbabelJNI.OBMol_GetGIDVector(swigCPtr, this, vectorUnsignedInt.getCPtr(arg0), arg0);
  }

  public boolean Has2D() {
    return openbabelJNI.OBMol_Has2D(swigCPtr, this);
  }

  public boolean Has3D() {
    return openbabelJNI.OBMol_Has3D(swigCPtr, this);
  }

  public boolean HasNonZeroCoords() {
    return openbabelJNI.OBMol_HasNonZeroCoords(swigCPtr, this);
  }

  public boolean HasAromaticPerceived() {
    return openbabelJNI.OBMol_HasAromaticPerceived(swigCPtr, this);
  }

  public boolean HasSSSRPerceived() {
    return openbabelJNI.OBMol_HasSSSRPerceived(swigCPtr, this);
  }

  public boolean HasRingAtomsAndBondsPerceived() {
    return openbabelJNI.OBMol_HasRingAtomsAndBondsPerceived(swigCPtr, this);
  }

  public boolean HasAtomTypesPerceived() {
    return openbabelJNI.OBMol_HasAtomTypesPerceived(swigCPtr, this);
  }

  public boolean HasRingTypesPerceived() {
    return openbabelJNI.OBMol_HasRingTypesPerceived(swigCPtr, this);
  }

  public boolean HasChiralityPerceived() {
    return openbabelJNI.OBMol_HasChiralityPerceived(swigCPtr, this);
  }

  public boolean HasPartialChargesPerceived() {
    return openbabelJNI.OBMol_HasPartialChargesPerceived(swigCPtr, this);
  }

  public boolean HasHybridizationPerceived() {
    return openbabelJNI.OBMol_HasHybridizationPerceived(swigCPtr, this);
  }

  public boolean HasImplicitValencePerceived() {
    return openbabelJNI.OBMol_HasImplicitValencePerceived(swigCPtr, this);
  }

  public boolean HasKekulePerceived() {
    return openbabelJNI.OBMol_HasKekulePerceived(swigCPtr, this);
  }

  public boolean HasClosureBondsPerceived() {
    return openbabelJNI.OBMol_HasClosureBondsPerceived(swigCPtr, this);
  }

  public boolean HasChainsPerceived() {
    return openbabelJNI.OBMol_HasChainsPerceived(swigCPtr, this);
  }

  public boolean HasHydrogensAdded() {
    return openbabelJNI.OBMol_HasHydrogensAdded(swigCPtr, this);
  }

  public boolean HasAromaticCorrected() {
    return openbabelJNI.OBMol_HasAromaticCorrected(swigCPtr, this);
  }

  public boolean IsCorrectedForPH() {
    return openbabelJNI.OBMol_IsCorrectedForPH(swigCPtr, this);
  }

  public boolean HasSpinMultiplicityAssigned() {
    return openbabelJNI.OBMol_HasSpinMultiplicityAssigned(swigCPtr, this);
  }

  public boolean IsChiral() {
    return openbabelJNI.OBMol_IsChiral(swigCPtr, this);
  }

  public boolean Empty() {
    return openbabelJNI.OBMol_Empty(swigCPtr, this);
  }

  public int NumConformers() {
    return openbabelJNI.OBMol_NumConformers(swigCPtr, this);
  }

  public void SetConformers(SWIGTYPE_p_std__vectorT_double_p_t v) {
    openbabelJNI.OBMol_SetConformers(swigCPtr, this, SWIGTYPE_p_std__vectorT_double_p_t.getCPtr(v));
  }

  public void AddConformer(SWIGTYPE_p_double f) {
    openbabelJNI.OBMol_AddConformer(swigCPtr, this, SWIGTYPE_p_double.getCPtr(f));
  }

  public void SetConformer(int i) {
    openbabelJNI.OBMol_SetConformer(swigCPtr, this, i);
  }

  public void CopyConformer(SWIGTYPE_p_double c, int nconf) {
    openbabelJNI.OBMol_CopyConformer(swigCPtr, this, SWIGTYPE_p_double.getCPtr(c), nconf);
  }

  public void DeleteConformer(int nconf) {
    openbabelJNI.OBMol_DeleteConformer(swigCPtr, this, nconf);
  }

  public SWIGTYPE_p_double GetConformer(int i) {
    long cPtr = openbabelJNI.OBMol_GetConformer(swigCPtr, this, i);
    return (cPtr == 0) ? null : new SWIGTYPE_p_double(cPtr, false);
  }

  public void SetEnergies(vectorDouble energies) {
    openbabelJNI.OBMol_SetEnergies(swigCPtr, this, vectorDouble.getCPtr(energies), energies);
  }

  public vectorDouble GetEnergies() {
    return new vectorDouble(openbabelJNI.OBMol_GetEnergies(swigCPtr, this), true);
  }

  public double GetEnergy(int ci) {
    return openbabelJNI.OBMol_GetEnergy__SWIG_1(swigCPtr, this, ci);
  }

  public SWIGTYPE_p_double BeginConformer(SWIGTYPE_p_std__vectorT_double_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_BeginConformer(swigCPtr, this, SWIGTYPE_p_std__vectorT_double_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new SWIGTYPE_p_double(cPtr, false);
  }

  public SWIGTYPE_p_double NextConformer(SWIGTYPE_p_std__vectorT_double_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_NextConformer(swigCPtr, this, SWIGTYPE_p_std__vectorT_double_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new SWIGTYPE_p_double(cPtr, false);
  }

  public SWIGTYPE_p_std__vectorT_double_p_t GetConformers() {
    return new SWIGTYPE_p_std__vectorT_double_p_t(openbabelJNI.OBMol_GetConformers(swigCPtr, this), false);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator BeginAtoms() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator(openbabelJNI.OBMol_BeginAtoms(swigCPtr, this), true);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator EndAtoms() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator(openbabelJNI.OBMol_EndAtoms(swigCPtr, this), true);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator BeginBonds() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator(openbabelJNI.OBMol_BeginBonds(swigCPtr, this), true);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator EndBonds() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator(openbabelJNI.OBMol_EndBonds(swigCPtr, this), true);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator BeginResidues() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator(openbabelJNI.OBMol_BeginResidues(swigCPtr, this), true);
  }

  public SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator EndResidues() {
    return new SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator(openbabelJNI.OBMol_EndResidues(swigCPtr, this), true);
  }

  public OBAtom BeginAtom(SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_BeginAtom(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBAtom(cPtr, false);
  }

  public OBAtom NextAtom(SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_NextAtom(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBAtom_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBAtom(cPtr, false);
  }

  public OBBond BeginBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_BeginBond(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBBond NextBond(SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_NextBond(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBBond_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBBond(cPtr, false);
  }

  public OBResidue BeginResidue(SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_BeginResidue(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBResidue(cPtr, false);
  }

  public OBResidue NextResidue(SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_NextResidue(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBResidue_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBResidue(cPtr, false);
  }

  public OBInternalCoord BeginInternalCoord(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_BeginInternalCoord(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBInternalCoord(cPtr, false);
  }

  public OBInternalCoord NextInternalCoord(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t__iterator i) {
    long cPtr = openbabelJNI.OBMol_NextInternalCoord(swigCPtr, this, SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t__iterator.getCPtr(i));
    return (cPtr == 0) ? null : new OBInternalCoord(cPtr, false);
  }

}
