/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 3.0.12
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package ur_rna.RNAstructure.backend;

public class HybridRNA extends RNA {
  private transient long swigCPtr;

  protected HybridRNA(long cPtr, boolean cMemoryOwn) {
    super(RNABackendJNI.HybridRNA_SWIGUpcast(cPtr), cMemoryOwn);
    swigCPtr = cPtr;
  }

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

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        RNABackendJNI.delete_HybridRNA(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public HybridRNA(String sequence1, String sequence2, boolean IsRNA) {
    this(RNABackendJNI.new_HybridRNA__SWIG_0(sequence1, sequence2, IsRNA), true);
  }

  public HybridRNA(String sequence1, String sequence2) {
    this(RNABackendJNI.new_HybridRNA__SWIG_1(sequence1, sequence2), true);
  }

  public HybridRNA(String filename1, int type1, String filename2, int type2, boolean IsRNA) {
    this(RNABackendJNI.new_HybridRNA__SWIG_2(filename1, type1, filename2, type2, IsRNA), true);
  }

  public HybridRNA(String filename1, int type1, String filename2, int type2) {
    this(RNABackendJNI.new_HybridRNA__SWIG_3(filename1, type1, filename2, type2), true);
  }

  public HybridRNA(String filename1, int type1, String filename2, int type2, String alphabet) {
    this(RNABackendJNI.new_HybridRNA__SWIG_4(filename1, type1, filename2, type2, alphabet), true);
  }

  public int AccessFold(double gamma, float percent, int maximumstructures, int window, int maxinternalloopsize) {
    return RNABackendJNI.HybridRNA_AccessFold__SWIG_0(swigCPtr, this, gamma, percent, maximumstructures, window, maxinternalloopsize);
  }

  public int AccessFold(double gamma, float percent, int maximumstructures, int window) {
    return RNABackendJNI.HybridRNA_AccessFold__SWIG_1(swigCPtr, this, gamma, percent, maximumstructures, window);
  }

  public int AccessFold(double gamma, float percent, int maximumstructures) {
    return RNABackendJNI.HybridRNA_AccessFold__SWIG_2(swigCPtr, this, gamma, percent, maximumstructures);
  }

  public int AccessFold(double gamma, float percent) {
    return RNABackendJNI.HybridRNA_AccessFold__SWIG_3(swigCPtr, this, gamma, percent);
  }

  public int AccessFold(double gamma) {
    return RNABackendJNI.HybridRNA_AccessFold__SWIG_4(swigCPtr, this, gamma);
  }

  public int AccessFold() {
    return RNABackendJNI.HybridRNA_AccessFold__SWIG_5(swigCPtr, this);
  }

  public int FoldBimolecular(float percent, int maximumstructures, int window, String savefile, int maxinternalloopsize) {
    return RNABackendJNI.HybridRNA_FoldBimolecular__SWIG_0(swigCPtr, this, percent, maximumstructures, window, savefile, maxinternalloopsize);
  }

  public int FoldBimolecular(float percent, int maximumstructures, int window, String savefile) {
    return RNABackendJNI.HybridRNA_FoldBimolecular__SWIG_1(swigCPtr, this, percent, maximumstructures, window, savefile);
  }

  public int FoldBimolecular(float percent, int maximumstructures, int window) {
    return RNABackendJNI.HybridRNA_FoldBimolecular__SWIG_2(swigCPtr, this, percent, maximumstructures, window);
  }

  public int FoldBimolecular(float percent, int maximumstructures) {
    return RNABackendJNI.HybridRNA_FoldBimolecular__SWIG_3(swigCPtr, this, percent, maximumstructures);
  }

  public int FoldBimolecular(float percent) {
    return RNABackendJNI.HybridRNA_FoldBimolecular__SWIG_4(swigCPtr, this, percent);
  }

  public int FoldBimolecular() {
    return RNABackendJNI.HybridRNA_FoldBimolecular__SWIG_5(swigCPtr, this);
  }

  public int FoldDuplex(float percent, int maximumstructures, int window, int maxinternalloopsize) {
    return RNABackendJNI.HybridRNA_FoldDuplex__SWIG_0(swigCPtr, this, percent, maximumstructures, window, maxinternalloopsize);
  }

  public int FoldDuplex(float percent, int maximumstructures, int window) {
    return RNABackendJNI.HybridRNA_FoldDuplex__SWIG_1(swigCPtr, this, percent, maximumstructures, window);
  }

  public int FoldDuplex(float percent, int maximumstructures) {
    return RNABackendJNI.HybridRNA_FoldDuplex__SWIG_2(swigCPtr, this, percent, maximumstructures);
  }

  public int FoldDuplex(float percent) {
    return RNABackendJNI.HybridRNA_FoldDuplex__SWIG_3(swigCPtr, this, percent);
  }

  public int FoldDuplex() {
    return RNABackendJNI.HybridRNA_FoldDuplex__SWIG_4(swigCPtr, this);
  }

  public int PartitionFunctionBimolecular(String savefile) {
    return RNABackendJNI.HybridRNA_PartitionFunctionBimolecular__SWIG_0(swigCPtr, this, savefile);
  }

  public int PartitionFunctionBimolecular() {
    return RNABackendJNI.HybridRNA_PartitionFunctionBimolecular__SWIG_1(swigCPtr, this);
  }

  public RNA GetRNA1() {
    long cPtr = RNABackendJNI.HybridRNA_GetRNA1(swigCPtr, this);
    return (cPtr == 0) ? null : new RNA(cPtr, false);
  }

  public RNA GetRNA2() {
    long cPtr = RNABackendJNI.HybridRNA_GetRNA2(swigCPtr, this);
    return (cPtr == 0) ? null : new RNA(cPtr, false);
  }

  public int GetErrorCode() {
    return RNABackendJNI.HybridRNA_GetErrorCode(swigCPtr, this);
  }

  public String GetMyErrorMessage(int error) {
    return RNABackendJNI.HybridRNA_GetMyErrorMessage(swigCPtr, this, error);
  }

  public boolean GetForbidIntramolecular() {
    return RNABackendJNI.HybridRNA_GetForbidIntramolecular(swigCPtr, this);
  }

  public void SetForbidIntramolecular(boolean forbid) {
    RNABackendJNI.HybridRNA_SetForbidIntramolecular(swigCPtr, this, forbid);
  }

  public void SetProgress(ProgressHandler Progress) {
    RNABackendJNI.HybridRNA_SetProgress(swigCPtr, this, ProgressHandler.getCPtr(Progress), Progress);
  }

  public void StopProgress() {
    RNABackendJNI.HybridRNA_StopProgress(swigCPtr, this);
  }

}
