//------------------------------------------------------------------------------
// <auto-generated />
//
// This file was automatically generated by SWIG (https://www.swig.org).
// Version 4.1.1
//
// Do not make changes to this file unless you know what you are doing - modify
// the SWIG interface file instead.
//------------------------------------------------------------------------------

namespace QuantLib {

public class CPICoupon : InflationCoupon {
  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
  private bool swigCMemOwnDerived;

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

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

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart, Date refPeriodEnd, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_0(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_1(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_2(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_3(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart, Date refPeriodEnd, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_4(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_5(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_6(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_7(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart, Date refPeriodEnd, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_8(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_9(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_10(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_11(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart, Date refPeriodEnd, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_12(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_13(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_14(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_15(baseCPI, Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart, Date refPeriodEnd, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_16(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_17(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_18(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_19(Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart, Date refPeriodEnd, Date exCouponDate) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_20(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd), Date.getCPtr(exCouponDate)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart, Date refPeriodEnd) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_21(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart), Date.getCPtr(refPeriodEnd)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread, Date refPeriodStart) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_22(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread, Date.getCPtr(refPeriodStart)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public CPICoupon(double baseCPI, Date baseDate, Date paymentDate, double nominal, Date startDate, Date endDate, ZeroInflationIndex index, Period observationLag, CPI.InterpolationType observationInterpolation, DayCounter dayCounter, double fixedRate, double spread) : this(NQuantLibcPINVOKE.new_CPICoupon__SWIG_23(baseCPI, Date.getCPtr(baseDate), Date.getCPtr(paymentDate), nominal, Date.getCPtr(startDate), Date.getCPtr(endDate), ZeroInflationIndex.getCPtr(index), Period.getCPtr(observationLag), (int)observationInterpolation, DayCounter.getCPtr(dayCounter), fixedRate, spread), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public double fixedRate() {
    double ret = NQuantLibcPINVOKE.CPICoupon_fixedRate(swigCPtr);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public double spread() {
    double ret = NQuantLibcPINVOKE.CPICoupon_spread(swigCPtr);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public double adjustedIndexGrowth() {
    double ret = NQuantLibcPINVOKE.CPICoupon_adjustedIndexGrowth(swigCPtr);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public new double indexFixing() {
    double ret = NQuantLibcPINVOKE.CPICoupon_indexFixing(swigCPtr);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public double indexRatio(Date d) {
    double ret = NQuantLibcPINVOKE.CPICoupon_indexRatio(swigCPtr, Date.getCPtr(d));
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public double baseCPI() {
    double ret = NQuantLibcPINVOKE.CPICoupon_baseCPI(swigCPtr);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public Date baseDate() {
    Date ret = new Date(NQuantLibcPINVOKE.CPICoupon_baseDate(swigCPtr), true);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

  public CPI.InterpolationType observationInterpolation() {
    CPI.InterpolationType ret = (CPI.InterpolationType)NQuantLibcPINVOKE.CPICoupon_observationInterpolation(swigCPtr);
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
    return ret;
  }

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

  public void setPricer(CPICouponPricer arg0) {
    NQuantLibcPINVOKE.CPICoupon_setPricer(swigCPtr, CPICouponPricer.getCPtr(arg0));
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

}

}
