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

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

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

  public YoYInflationCapFloorTermPriceSurface(uint fixingDays, Period yyLag, YoYInflationIndex yii, double baseRate, YieldTermStructureHandle nominal, DayCounter dc, Calendar cal, BusinessDayConvention bdc, DoubleVector cStrikes, DoubleVector fStrikes, PeriodVector cfMaturities, Matrix cPrice, Matrix fPrice, Bicubic interpolator2d, Cubic interpolator1d) : this(NQuantLibcPINVOKE.new_YoYInflationCapFloorTermPriceSurface__SWIG_0(fixingDays, Period.getCPtr(yyLag), YoYInflationIndex.getCPtr(yii), baseRate, YieldTermStructureHandle.getCPtr(nominal), DayCounter.getCPtr(dc), Calendar.getCPtr(cal), (int)bdc, DoubleVector.getCPtr(cStrikes), DoubleVector.getCPtr(fStrikes), PeriodVector.getCPtr(cfMaturities), Matrix.getCPtr(cPrice), Matrix.getCPtr(fPrice), Bicubic.getCPtr(interpolator2d), Cubic.getCPtr(interpolator1d)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public YoYInflationCapFloorTermPriceSurface(uint fixingDays, Period yyLag, YoYInflationIndex yii, double baseRate, YieldTermStructureHandle nominal, DayCounter dc, Calendar cal, BusinessDayConvention bdc, DoubleVector cStrikes, DoubleVector fStrikes, PeriodVector cfMaturities, Matrix cPrice, Matrix fPrice, Bicubic interpolator2d) : this(NQuantLibcPINVOKE.new_YoYInflationCapFloorTermPriceSurface__SWIG_1(fixingDays, Period.getCPtr(yyLag), YoYInflationIndex.getCPtr(yii), baseRate, YieldTermStructureHandle.getCPtr(nominal), DayCounter.getCPtr(dc), Calendar.getCPtr(cal), (int)bdc, DoubleVector.getCPtr(cStrikes), DoubleVector.getCPtr(fStrikes), PeriodVector.getCPtr(cfMaturities), Matrix.getCPtr(cPrice), Matrix.getCPtr(fPrice), Bicubic.getCPtr(interpolator2d)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

  public YoYInflationCapFloorTermPriceSurface(uint fixingDays, Period yyLag, YoYInflationIndex yii, double baseRate, YieldTermStructureHandle nominal, DayCounter dc, Calendar cal, BusinessDayConvention bdc, DoubleVector cStrikes, DoubleVector fStrikes, PeriodVector cfMaturities, Matrix cPrice, Matrix fPrice) : this(NQuantLibcPINVOKE.new_YoYInflationCapFloorTermPriceSurface__SWIG_2(fixingDays, Period.getCPtr(yyLag), YoYInflationIndex.getCPtr(yii), baseRate, YieldTermStructureHandle.getCPtr(nominal), DayCounter.getCPtr(dc), Calendar.getCPtr(cal), (int)bdc, DoubleVector.getCPtr(cStrikes), DoubleVector.getCPtr(fStrikes), PeriodVector.getCPtr(cfMaturities), Matrix.getCPtr(cPrice), Matrix.getCPtr(fPrice)), true) {
    if (NQuantLibcPINVOKE.SWIGPendingException.Pending) throw NQuantLibcPINVOKE.SWIGPendingException.Retrieve();
  }

}

}
