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

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

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

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention, bool exCouponEndOfMonth, bool useCleanPrice) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_0(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate), Calendar.getCPtr(paymentCalendar), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar), (int)exCouponConvention, exCouponEndOfMonth, useCleanPrice), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention, bool exCouponEndOfMonth) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_1(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate), Calendar.getCPtr(paymentCalendar), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar), (int)exCouponConvention, exCouponEndOfMonth), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_2(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate), Calendar.getCPtr(paymentCalendar), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar), (int)exCouponConvention), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_3(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate), Calendar.getCPtr(paymentCalendar), Period.getCPtr(exCouponPeriod), Calendar.getCPtr(exCouponCalendar)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_4(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate), Calendar.getCPtr(paymentCalendar), Period.getCPtr(exCouponPeriod)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate, Calendar paymentCalendar) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_5(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate), Calendar.getCPtr(paymentCalendar)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption, Date issueDate) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_6(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption, Date.getCPtr(issueDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, double redemption) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_7(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention, redemption), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_8(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter), (int)paymentConvention), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBondHelper(QuoteHandle cleanPrice, uint settlementDays, double faceAmount, Schedule schedule, DoubleVector coupons, DayCounter paymentDayCounter) : this(NQuantLibcPINVOKE.new_FixedRateBondHelper__SWIG_9(QuoteHandle.getCPtr(cleanPrice), settlementDays, faceAmount, Schedule.getCPtr(schedule), DoubleVector.getCPtr(coupons), DayCounter.getCPtr(paymentDayCounter)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public FixedRateBond fixedRateBond() {
    global::System.IntPtr cPtr = NQuantLibcPINVOKE.FixedRateBondHelper_fixedRateBond(swigCPtr);
    FixedRateBond ret = (cPtr == global::System.IntPtr.Zero) ? null : new FixedRateBond(cPtr, true);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

}

}
