//------------------------------------------------------------------------------
// <auto-generated />
//
// This file was automatically generated by SWIG (http://www.swig.org).
// Version 3.0.12
//
// 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;

  internal FixedRateBondHelper(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NQuantLibcPINVOKE.FixedRateBondHelper_SWIGUpcast(cPtr), 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;
  }

  ~FixedRateBondHelper() {
    Dispose();
  }

  public override void Dispose() {
    lock(this) {
      if (swigCPtr.Handle != global::System.IntPtr.Zero) {
        if (swigCMemOwn) {
          swigCMemOwn = false;
          NQuantLibcPINVOKE.delete_FixedRateBondHelper(swigCPtr);
        }
        swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
      }
      global::System.GC.SuppressFinalize(this);
      base.Dispose();
    }
  }

  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 new FixedRateBond bond() {
    FixedRateBond ret = new FixedRateBond(NQuantLibcPINVOKE.FixedRateBondHelper_bond(swigCPtr), true);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

}

}
