/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (https://www.swig.org).
 * Version 4.1.0
 *
 * 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 ConvertibleFloatingRateBond extends Bond {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

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

  protected static long getCPtr(ConvertibleFloatingRateBond 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_ConvertibleFloatingRateBond(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public ConvertibleFloatingRateBond(Exercise exercise, double conversionRatio, CallabilitySchedule callability, Date issueDate, int settlementDays, IborIndex index, int fixingDays, DoubleVector spreads, DayCounter dayCounter, Schedule schedule, double redemption, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention, boolean exCouponEndOfMonth) {
    this(QuantLibJNI.new_ConvertibleFloatingRateBond__SWIG_0(Exercise.getCPtr(exercise), exercise, conversionRatio, CallabilitySchedule.getCPtr(callability), callability, Date.getCPtr(issueDate), issueDate, settlementDays, IborIndex.getCPtr(index), index, fixingDays, DoubleVector.getCPtr(spreads), spreads, DayCounter.getCPtr(dayCounter), dayCounter, Schedule.getCPtr(schedule), schedule, redemption, Period.getCPtr(exCouponPeriod), exCouponPeriod, Calendar.getCPtr(exCouponCalendar), exCouponCalendar, exCouponConvention.swigValue(), exCouponEndOfMonth), true);
  }

  public ConvertibleFloatingRateBond(Exercise exercise, double conversionRatio, CallabilitySchedule callability, Date issueDate, int settlementDays, IborIndex index, int fixingDays, DoubleVector spreads, DayCounter dayCounter, Schedule schedule, double redemption, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention) {
    this(QuantLibJNI.new_ConvertibleFloatingRateBond__SWIG_1(Exercise.getCPtr(exercise), exercise, conversionRatio, CallabilitySchedule.getCPtr(callability), callability, Date.getCPtr(issueDate), issueDate, settlementDays, IborIndex.getCPtr(index), index, fixingDays, DoubleVector.getCPtr(spreads), spreads, DayCounter.getCPtr(dayCounter), dayCounter, Schedule.getCPtr(schedule), schedule, redemption, Period.getCPtr(exCouponPeriod), exCouponPeriod, Calendar.getCPtr(exCouponCalendar), exCouponCalendar, exCouponConvention.swigValue()), true);
  }

  public ConvertibleFloatingRateBond(Exercise exercise, double conversionRatio, CallabilitySchedule callability, Date issueDate, int settlementDays, IborIndex index, int fixingDays, DoubleVector spreads, DayCounter dayCounter, Schedule schedule, double redemption, Period exCouponPeriod, Calendar exCouponCalendar) {
    this(QuantLibJNI.new_ConvertibleFloatingRateBond__SWIG_2(Exercise.getCPtr(exercise), exercise, conversionRatio, CallabilitySchedule.getCPtr(callability), callability, Date.getCPtr(issueDate), issueDate, settlementDays, IborIndex.getCPtr(index), index, fixingDays, DoubleVector.getCPtr(spreads), spreads, DayCounter.getCPtr(dayCounter), dayCounter, Schedule.getCPtr(schedule), schedule, redemption, Period.getCPtr(exCouponPeriod), exCouponPeriod, Calendar.getCPtr(exCouponCalendar), exCouponCalendar), true);
  }

  public ConvertibleFloatingRateBond(Exercise exercise, double conversionRatio, CallabilitySchedule callability, Date issueDate, int settlementDays, IborIndex index, int fixingDays, DoubleVector spreads, DayCounter dayCounter, Schedule schedule, double redemption, Period exCouponPeriod) {
    this(QuantLibJNI.new_ConvertibleFloatingRateBond__SWIG_3(Exercise.getCPtr(exercise), exercise, conversionRatio, CallabilitySchedule.getCPtr(callability), callability, Date.getCPtr(issueDate), issueDate, settlementDays, IborIndex.getCPtr(index), index, fixingDays, DoubleVector.getCPtr(spreads), spreads, DayCounter.getCPtr(dayCounter), dayCounter, Schedule.getCPtr(schedule), schedule, redemption, Period.getCPtr(exCouponPeriod), exCouponPeriod), true);
  }

  public ConvertibleFloatingRateBond(Exercise exercise, double conversionRatio, CallabilitySchedule callability, Date issueDate, int settlementDays, IborIndex index, int fixingDays, DoubleVector spreads, DayCounter dayCounter, Schedule schedule, double redemption) {
    this(QuantLibJNI.new_ConvertibleFloatingRateBond__SWIG_4(Exercise.getCPtr(exercise), exercise, conversionRatio, CallabilitySchedule.getCPtr(callability), callability, Date.getCPtr(issueDate), issueDate, settlementDays, IborIndex.getCPtr(index), index, fixingDays, DoubleVector.getCPtr(spreads), spreads, DayCounter.getCPtr(dayCounter), dayCounter, Schedule.getCPtr(schedule), schedule, redemption), true);
  }

  public ConvertibleFloatingRateBond(Exercise exercise, double conversionRatio, CallabilitySchedule callability, Date issueDate, int settlementDays, IborIndex index, int fixingDays, DoubleVector spreads, DayCounter dayCounter, Schedule schedule) {
    this(QuantLibJNI.new_ConvertibleFloatingRateBond__SWIG_5(Exercise.getCPtr(exercise), exercise, conversionRatio, CallabilitySchedule.getCPtr(callability), callability, Date.getCPtr(issueDate), issueDate, settlementDays, IborIndex.getCPtr(index), index, fixingDays, DoubleVector.getCPtr(spreads), spreads, DayCounter.getCPtr(dayCounter), dayCounter, Schedule.getCPtr(schedule), schedule), true);
  }

}
