//------------------------------------------------------------------------------
// <auto-generated />
//
// 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.
//------------------------------------------------------------------------------

namespace QuantLib {

public class AmortizingFloatingRateBond : Bond {
  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
  private bool swigCMemOwnDerived;

  internal AmortizingFloatingRateBond(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NQuantLibcPINVOKE.AmortizingFloatingRateBond_SWIGSmartPtrUpcast(cPtr), true) {
    swigCMemOwnDerived = cMemoryOwn;
    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
  }

  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(AmortizingFloatingRateBond obj) {
    return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
  }

  protected override void Dispose(bool disposing) {
    lock(this) {
      if (swigCPtr.Handle != global::System.IntPtr.Zero) {
        if (swigCMemOwnDerived) {
          swigCMemOwnDerived = false;
          NQuantLibcPINVOKE.delete_AmortizingFloatingRateBond(swigCPtr);
        }
        swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
      }
      base.Dispose(disposing);
    }
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, bool inArrears, Date issueDate, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention, bool exCouponEndOfMonth) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_0(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors), inArrears, Date.getCPtr(issueDate), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar), (int)exCouponConvention, exCouponEndOfMonth), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, bool inArrears, Date issueDate, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_1(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors), inArrears, Date.getCPtr(issueDate), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar), (int)exCouponConvention), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, bool inArrears, Date issueDate, Period exCouponPeriod, Calendar exCouponCalendar) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_2(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors), inArrears, Date.getCPtr(issueDate), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, bool inArrears, Date issueDate, Period exCouponPeriod) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_3(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors), inArrears, Date.getCPtr(issueDate), Period.getCPtr(exCouponPeriod)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, bool inArrears, Date issueDate) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_4(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors), inArrears, Date.getCPtr(issueDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, bool inArrears) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_5(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors), inArrears), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_6(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps), DoubleVector.getCPtr(floors)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_7(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads), DoubleVector.getCPtr(caps)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings, DoubleVector spreads) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_8(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings), DoubleVector.getCPtr(spreads)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays, DoubleVector gearings) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_9(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays, DoubleVector.getCPtr(gearings)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, uint fixingDays) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_10(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention, fixingDays), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_11(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter), (int)paymentConvention), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public AmortizingFloatingRateBond(uint settlementDays, DoubleVector notional, Schedule schedule, IborIndex index, DayCounter accrualDayCounter) : this(NQuantLibcPINVOKE.new_AmortizingFloatingRateBond__SWIG_12(settlementDays, DoubleVector.getCPtr(notional), Schedule.getCPtr(schedule), IborIndex.getCPtr(index), DayCounter.getCPtr(accrualDayCounter)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

}

}
