/* ----------------------------------------------------------------------------
 * 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 openbabel implements openbabelConstants {
  public static OBPairData toPairData(OBGenericData data) {
    long cPtr = openbabelJNI.toPairData(OBGenericData.getCPtr(data), data);
    return (cPtr == 0) ? null : new OBPairData(cPtr, false);
  }

  public static OBUnitCell toUnitCell(OBGenericData data) {
    long cPtr = openbabelJNI.toUnitCell(OBGenericData.getCPtr(data), data);
    return (cPtr == 0) ? null : new OBUnitCell(cPtr, false);
  }

  public static void DoubleMultiply(long arg0, long arg1, DoubleType arg2) {
    openbabelJNI.DoubleMultiply(arg0, arg1, DoubleType.getCPtr(arg2), arg2);
  }

  public static void DoubleAdd(DoubleType arg0, long arg1) {
    openbabelJNI.DoubleAdd(DoubleType.getCPtr(arg0), arg0, arg1);
  }

  public static long DoubleModulus(DoubleType arg0, long arg1) {
    return openbabelJNI.DoubleModulus(DoubleType.getCPtr(arg0), arg0, arg1);
  }

  public static double dot(vector3 v1, vector3 v2) {
    return openbabelJNI.dot(vector3.getCPtr(v1), v1, vector3.getCPtr(v2), v2);
  }

  public static vector3 cross(vector3 arg0, vector3 arg1) {
    return new vector3(openbabelJNI.cross(vector3.getCPtr(arg0), arg0, vector3.getCPtr(arg1), arg1), true);
  }

  public static double vectorAngle(vector3 v1, vector3 v2) {
    return openbabelJNI.vectorAngle(vector3.getCPtr(v1), v1, vector3.getCPtr(v2), v2);
  }

  public static double CalcTorsionAngle(vector3 a, vector3 b, vector3 c, vector3 d) {
    return openbabelJNI.CalcTorsionAngle(vector3.getCPtr(a), a, vector3.getCPtr(b), b, vector3.getCPtr(c), c, vector3.getCPtr(d), d);
  }

  public static double Point2Plane(vector3 a, vector3 b, vector3 c, vector3 d) {
    return openbabelJNI.Point2Plane(vector3.getCPtr(a), a, vector3.getCPtr(b), b, vector3.getCPtr(c), c, vector3.getCPtr(d), d);
  }

  public static double Point2PlaneAngle(vector3 a, vector3 b, vector3 c, vector3 d) {
    return openbabelJNI.Point2PlaneAngle(vector3.getCPtr(a), a, vector3.getCPtr(b), b, vector3.getCPtr(c), c, vector3.getCPtr(d), d);
  }

  public static vector3 getVZero() {
    return new vector3(openbabelJNI.VZero_get(), false);
  }

  public static vector3 getVX() {
    return new vector3(openbabelJNI.VX_get(), false);
  }

  public static vector3 getVY() {
    return new vector3(openbabelJNI.VY_get(), false);
  }

  public static vector3 getVZ() {
    return new vector3(openbabelJNI.VZ_get(), false);
  }

  public static double Tanimoto(OBBitVec bv1, OBBitVec bv2) {
    return openbabelJNI.Tanimoto(OBBitVec.getCPtr(bv1), bv1, OBBitVec.getCPtr(bv2), bv2);
  }

  public static void setObErrorLog(OBMessageHandler value) {
    openbabelJNI.obErrorLog_set(OBMessageHandler.getCPtr(value), value);
  }

  public static OBMessageHandler getObErrorLog() {
    return new OBMessageHandler(openbabelJNI.obErrorLog_get(), false);
  }

  public static void setResidue(SWIGTYPE_p_a_4__char value) {
    openbabelJNI.Residue_set(SWIGTYPE_p_a_4__char.getCPtr(value));
  }

  public static SWIGTYPE_p_a_4__char getResidue() {
    long cPtr = openbabelJNI.Residue_get();
    return (cPtr == 0) ? null : new SWIGTYPE_p_a_4__char(cPtr, false);
  }

  public static void setElemDesc(SWIGTYPE_p_a_4__char value) {
    openbabelJNI.ElemDesc_set(SWIGTYPE_p_a_4__char.getCPtr(value));
  }

  public static SWIGTYPE_p_a_4__char getElemDesc() {
    long cPtr = openbabelJNI.ElemDesc_get();
    return (cPtr == 0) ? null : new SWIGTYPE_p_a_4__char(cPtr, false);
  }

  public static void setResNo(long value) {
    openbabelJNI.ResNo_set(value);
  }

  public static long getResNo() {
    return openbabelJNI.ResNo_get();
  }

  public static void setElemNo(long value) {
    openbabelJNI.ElemNo_set(value);
  }

  public static long getElemNo() {
    return openbabelJNI.ElemNo_get();
  }

  public static void ThrowError(String str) {
    openbabelJNI.ThrowError__SWIG_0(str);
  }

  public static void ThrowError(SWIGTYPE_p_std__string str) {
    openbabelJNI.ThrowError__SWIG_1(SWIGTYPE_p_std__string.getCPtr(str));
  }

  public static void CartesianToInternal(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t arg0, OBMol arg1) {
    openbabelJNI.CartesianToInternal(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t.getCPtr(arg0), OBMol.getCPtr(arg1), arg1);
  }

  public static void InternalToCartesian(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t arg0, OBMol arg1) {
    openbabelJNI.InternalToCartesian(SWIGTYPE_p_std__vectorT_OpenBabel__OBInternalCoord_p_t.getCPtr(arg0), OBMol.getCPtr(arg1), arg1);
  }

  public static String NewExtension(SWIGTYPE_p_std__string arg0, String arg1) {
    return openbabelJNI.NewExtension(SWIGTYPE_p_std__string.getCPtr(arg0), arg1);
  }

  public static void setEtab(OBElementTable value) {
    openbabelJNI.etab_set(OBElementTable.getCPtr(value), value);
  }

  public static OBElementTable getEtab() {
    return new OBElementTable(openbabelJNI.etab_get(), false);
  }

  public static void setTtab(OBTypeTable value) {
    openbabelJNI.ttab_set(OBTypeTable.getCPtr(value), value);
  }

  public static OBTypeTable getTtab() {
    return new OBTypeTable(openbabelJNI.ttab_get(), false);
  }

  public static void setIsotab(OBIsotopeTable value) {
    openbabelJNI.isotab_set(OBIsotopeTable.getCPtr(value), value);
  }

  public static OBIsotopeTable getIsotab() {
    return new OBIsotopeTable(openbabelJNI.isotab_get(), false);
  }

  public static void setAromtyper(OBAromaticTyper value) {
    openbabelJNI.aromtyper_set(OBAromaticTyper.getCPtr(value), value);
  }

  public static OBAromaticTyper getAromtyper() {
    return new OBAromaticTyper(openbabelJNI.aromtyper_get(), false);
  }

  public static void setAtomtyper(OBAtomTyper value) {
    openbabelJNI.atomtyper_set(OBAtomTyper.getCPtr(value), value);
  }

  public static OBAtomTyper getAtomtyper() {
    return new OBAtomTyper(openbabelJNI.atomtyper_get(), false);
  }

  public static void setChainsparser(OBChainsParser value) {
    openbabelJNI.chainsparser_set(OBChainsParser.getCPtr(value), value);
  }

  public static OBChainsParser getChainsparser() {
    return new OBChainsParser(openbabelJNI.chainsparser_get(), false);
  }

  public static void setResdat(OBResidueData value) {
    openbabelJNI.resdat_set(OBResidueData.getCPtr(value), value);
  }

  public static OBResidueData getResdat() {
    return new OBResidueData(openbabelJNI.resdat_get(), false);
  }

  public static void get_rmat(SWIGTYPE_p_double arg0, SWIGTYPE_p_double arg1, SWIGTYPE_p_double arg2, int arg3) {
    openbabelJNI.get_rmat(SWIGTYPE_p_double.getCPtr(arg0), SWIGTYPE_p_double.getCPtr(arg1), SWIGTYPE_p_double.getCPtr(arg2), arg3);
  }

  public static void ob_make_rmat(SWIGTYPE_p_a_3__double mat, SWIGTYPE_p_double rmat) {
    openbabelJNI.ob_make_rmat(SWIGTYPE_p_a_3__double.getCPtr(mat), SWIGTYPE_p_double.getCPtr(rmat));
  }

  public static void qtrfit(SWIGTYPE_p_double r, SWIGTYPE_p_double f, int size, SWIGTYPE_p_a_3__double u) {
    openbabelJNI.qtrfit(SWIGTYPE_p_double.getCPtr(r), SWIGTYPE_p_double.getCPtr(f), size, SWIGTYPE_p_a_3__double.getCPtr(u));
  }

  public static double superimpose(SWIGTYPE_p_double arg0, SWIGTYPE_p_double arg1, int arg2) {
    return openbabelJNI.superimpose(SWIGTYPE_p_double.getCPtr(arg0), SWIGTYPE_p_double.getCPtr(arg1), arg2);
  }

  public static boolean CompareRingSize(OBRing arg0, OBRing arg1) {
    return openbabelJNI.CompareRingSize(OBRing.getCPtr(arg0), arg0, OBRing.getCPtr(arg1), arg1);
  }

  public static void SmartsLexReplace(SWIGTYPE_p_std__string arg0, SWIGTYPE_p_std__vectorT_std__pairT_std__string_std__string_t_t arg1) {
    openbabelJNI.SmartsLexReplace(SWIGTYPE_p_std__string.getCPtr(arg0), SWIGTYPE_p_std__vectorT_std__pairT_std__string_std__string_t_t.getCPtr(arg1));
  }

}
