//------------------------------------------------------------------------------
// <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 CappedFlooredCmsCoupon : CappedFlooredCoupon {
  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
  private bool swigCMemOwnDerived;

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

  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CappedFlooredCmsCoupon 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_CappedFlooredCmsCoupon(swigCPtr);
        }
        swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
      }
      base.Dispose(disposing);
    }
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap, double floor, Date refPeriodStart, Date refPeriodEnd, DayCounter dayCounter, bool isInArrears, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_0(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap, floor, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), DayCounter.getCPtr(dayCounter), isInArrears, Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap, double floor, Date refPeriodStart, Date refPeriodEnd, DayCounter dayCounter, bool isInArrears) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_1(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap, floor, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), DayCounter.getCPtr(dayCounter), isInArrears), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap, double floor, Date refPeriodStart, Date refPeriodEnd, DayCounter dayCounter) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_2(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap, floor, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), DayCounter.getCPtr(dayCounter)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap, double floor, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_3(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap, floor, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap, double floor, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_4(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap, floor, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap, double floor) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_5(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap, floor), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread, double cap) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_6(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread, cap), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing, double spread) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_7(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing, spread), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index, double gearing) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_8(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index), gearing), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CappedFlooredCmsCoupon(Date paymentDate, double nominal, Date startDate, Date endDate, uint fixingDays, SwapIndex index) : this(NQuantLibcPINVOKE.new_CappedFlooredCmsCoupon__SWIG_9(Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), fixingDays, SwapIndex.getCPtr(index)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

}

}
