/* ----------------------------------------------------------------------------
 * 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.
 * ----------------------------------------------------------------------------- */

package org.quantlib;

public class CPIBond extends Bond {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

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

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

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention, boolean exCouponEndOfMonth) {
    this(QuantLibJNI.new_CPIBond__SWIG_0(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue(), Date.getCPtr(issueDate), issueDate, Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(exCouponPeriod), exCouponPeriod, Calendar.getCPtr(exCouponCalendar), exCouponCalendar, exCouponConvention.swigValue(), exCouponEndOfMonth), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar, BusinessDayConvention exCouponConvention) {
    this(QuantLibJNI.new_CPIBond__SWIG_1(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue(), Date.getCPtr(issueDate), issueDate, Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(exCouponPeriod), exCouponPeriod, Calendar.getCPtr(exCouponCalendar), exCouponCalendar, exCouponConvention.swigValue()), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod, Calendar exCouponCalendar) {
    this(QuantLibJNI.new_CPIBond__SWIG_2(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue(), Date.getCPtr(issueDate), issueDate, Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(exCouponPeriod), exCouponPeriod, Calendar.getCPtr(exCouponCalendar), exCouponCalendar), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, Date issueDate, Calendar paymentCalendar, Period exCouponPeriod) {
    this(QuantLibJNI.new_CPIBond__SWIG_3(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue(), Date.getCPtr(issueDate), issueDate, Calendar.getCPtr(paymentCalendar), paymentCalendar, Period.getCPtr(exCouponPeriod), exCouponPeriod), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, Date issueDate, Calendar paymentCalendar) {
    this(QuantLibJNI.new_CPIBond__SWIG_4(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue(), Date.getCPtr(issueDate), issueDate, Calendar.getCPtr(paymentCalendar), paymentCalendar), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention, Date issueDate) {
    this(QuantLibJNI.new_CPIBond__SWIG_5(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue(), Date.getCPtr(issueDate), issueDate), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter, BusinessDayConvention paymentConvention) {
    this(QuantLibJNI.new_CPIBond__SWIG_6(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter, paymentConvention.swigValue()), true);
  }

  public CPIBond(long settlementDays, double faceAmount, boolean growthOnly, double baseCPI, Period observationLag, ZeroInflationIndex cpiIndex, CPI.InterpolationType observationInterpolation, Schedule schedule, DoubleVector coupons, DayCounter accrualDayCounter) {
    this(QuantLibJNI.new_CPIBond__SWIG_7(settlementDays, faceAmount, growthOnly, baseCPI, Period.getCPtr(observationLag), observationLag, ZeroInflationIndex.getCPtr(cpiIndex), cpiIndex, observationInterpolation.swigValue(), Schedule.getCPtr(schedule), schedule, DoubleVector.getCPtr(coupons), coupons, DayCounter.getCPtr(accrualDayCounter), accrualDayCounter), true);
  }

}
