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

package org.quantlib;

public class FloatFloatSwap extends Swap {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

  protected FloatFloatSwap(long cPtr, boolean cMemoryOwn) {
    super(QuantLibJNI.FloatFloatSwap_SWIGSmartPtrUpcast(cPtr), true);
    swigCMemOwnDerived = cMemoryOwn;
    swigCPtr = cPtr;
  }

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

  protected void swigSetCMemOwn(boolean own) {
    swigCMemOwnDerived = own;
    super.swigSetCMemOwn(own);
  }

  @SuppressWarnings("deprecation")
  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwnDerived) {
        swigCMemOwnDerived = false;
        QuantLibJNI.delete_FloatFloatSwap(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1, DoubleVector gearing2, DoubleVector spread2, DoubleVector cappedRate2, DoubleVector flooredRate2, BusinessDayConvention paymentConvention1, BusinessDayConvention paymentConvention2) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_0(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1, DoubleVector.getCPtr(gearing2), gearing2, DoubleVector.getCPtr(spread2), spread2, DoubleVector.getCPtr(cappedRate2), cappedRate2, DoubleVector.getCPtr(flooredRate2), flooredRate2, paymentConvention1.swigValue(), paymentConvention2.swigValue()), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1, DoubleVector gearing2, DoubleVector spread2, DoubleVector cappedRate2, DoubleVector flooredRate2, BusinessDayConvention paymentConvention1) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_1(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1, DoubleVector.getCPtr(gearing2), gearing2, DoubleVector.getCPtr(spread2), spread2, DoubleVector.getCPtr(cappedRate2), cappedRate2, DoubleVector.getCPtr(flooredRate2), flooredRate2, paymentConvention1.swigValue()), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1, DoubleVector gearing2, DoubleVector spread2, DoubleVector cappedRate2, DoubleVector flooredRate2) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_2(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1, DoubleVector.getCPtr(gearing2), gearing2, DoubleVector.getCPtr(spread2), spread2, DoubleVector.getCPtr(cappedRate2), cappedRate2, DoubleVector.getCPtr(flooredRate2), flooredRate2), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1, DoubleVector gearing2, DoubleVector spread2, DoubleVector cappedRate2) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_3(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1, DoubleVector.getCPtr(gearing2), gearing2, DoubleVector.getCPtr(spread2), spread2, DoubleVector.getCPtr(cappedRate2), cappedRate2), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1, DoubleVector gearing2, DoubleVector spread2) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_4(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1, DoubleVector.getCPtr(gearing2), gearing2, DoubleVector.getCPtr(spread2), spread2), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1, DoubleVector gearing2) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_5(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1, DoubleVector.getCPtr(gearing2), gearing2), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1, DoubleVector flooredRate1) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_6(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1, DoubleVector.getCPtr(flooredRate1), flooredRate1), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1, DoubleVector cappedRate1) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_7(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1, DoubleVector.getCPtr(cappedRate1), cappedRate1), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1, DoubleVector spread1) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_8(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1, DoubleVector.getCPtr(spread1), spread1), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange, DoubleVector gearing1) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_9(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange, DoubleVector.getCPtr(gearing1), gearing1), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange, boolean finalCapitalExchange) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_10(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange, finalCapitalExchange), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2, boolean intermediateCapitalExchange) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_11(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2, intermediateCapitalExchange), true);
  }

  public FloatFloatSwap(VanillaSwap.Type type, DoubleVector nominal1, DoubleVector nominal2, Schedule schedule1, InterestRateIndex index1, DayCounter dayCount1, Schedule schedule2, InterestRateIndex index2, DayCounter dayCount2) {
    this(QuantLibJNI.new_FloatFloatSwap__SWIG_12(type.swigValue(), DoubleVector.getCPtr(nominal1), nominal1, DoubleVector.getCPtr(nominal2), nominal2, Schedule.getCPtr(schedule1), schedule1, InterestRateIndex.getCPtr(index1), index1, DayCounter.getCPtr(dayCount1), dayCount1, Schedule.getCPtr(schedule2), schedule2, InterestRateIndex.getCPtr(index2), index2, DayCounter.getCPtr(dayCount2), dayCount2), true);
  }

}
