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

package org.quantlib;

public class SviInterpolatedSmileSection extends SmileSection {
  private transient long swigCPtr;
  private transient boolean swigCMemOwnDerived;

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

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

  public SviInterpolatedSmileSection(Date optionDate, QuoteHandle forward, DoubleVector strikes, boolean hasFloatingStrikes, QuoteHandle atmVolatility, QuoteHandleVector volHandles, double a, double b, double sigma, double rho, double m, boolean aIsFixed, boolean bIsFixed, boolean sigmaIsFixed, boolean rhoIsFixed, boolean mIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod method, DayCounter dc) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_0(Date.getCPtr(optionDate), optionDate, QuoteHandle.getCPtr(forward), forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, QuoteHandle.getCPtr(atmVolatility), atmVolatility, QuoteHandleVector.getCPtr(volHandles), volHandles, a, b, sigma, rho, m, aIsFixed, bIsFixed, sigmaIsFixed, rhoIsFixed, mIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(method), method, DayCounter.getCPtr(dc), dc), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, QuoteHandle forward, DoubleVector strikes, boolean hasFloatingStrikes, QuoteHandle atmVolatility, QuoteHandleVector volHandles, double a, double b, double sigma, double rho, double m, boolean aIsFixed, boolean bIsFixed, boolean sigmaIsFixed, boolean rhoIsFixed, boolean mIsFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod method) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_1(Date.getCPtr(optionDate), optionDate, QuoteHandle.getCPtr(forward), forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, QuoteHandle.getCPtr(atmVolatility), atmVolatility, QuoteHandleVector.getCPtr(volHandles), volHandles, a, b, sigma, rho, m, aIsFixed, bIsFixed, sigmaIsFixed, rhoIsFixed, mIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(method), method), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, QuoteHandle forward, DoubleVector strikes, boolean hasFloatingStrikes, QuoteHandle atmVolatility, QuoteHandleVector volHandles, double a, double b, double sigma, double rho, double m, boolean aIsFixed, boolean bIsFixed, boolean sigmaIsFixed, boolean rhoIsFixed, boolean mIsFixed, boolean vegaWeighted, EndCriteria endCriteria) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_2(Date.getCPtr(optionDate), optionDate, QuoteHandle.getCPtr(forward), forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, QuoteHandle.getCPtr(atmVolatility), atmVolatility, QuoteHandleVector.getCPtr(volHandles), volHandles, a, b, sigma, rho, m, aIsFixed, bIsFixed, sigmaIsFixed, rhoIsFixed, mIsFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, QuoteHandle forward, DoubleVector strikes, boolean hasFloatingStrikes, QuoteHandle atmVolatility, QuoteHandleVector volHandles, double a, double b, double sigma, double rho, double m, boolean aIsFixed, boolean bIsFixed, boolean sigmaIsFixed, boolean rhoIsFixed, boolean mIsFixed, boolean vegaWeighted) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_3(Date.getCPtr(optionDate), optionDate, QuoteHandle.getCPtr(forward), forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, QuoteHandle.getCPtr(atmVolatility), atmVolatility, QuoteHandleVector.getCPtr(volHandles), volHandles, a, b, sigma, rho, m, aIsFixed, bIsFixed, sigmaIsFixed, rhoIsFixed, mIsFixed, vegaWeighted), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, QuoteHandle forward, DoubleVector strikes, boolean hasFloatingStrikes, QuoteHandle atmVolatility, QuoteHandleVector volHandles, double a, double b, double sigma, double rho, double m, boolean aIsFixed, boolean bIsFixed, boolean sigmaIsFixed, boolean rhoIsFixed, boolean mIsFixed) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_4(Date.getCPtr(optionDate), optionDate, QuoteHandle.getCPtr(forward), forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, QuoteHandle.getCPtr(atmVolatility), atmVolatility, QuoteHandleVector.getCPtr(volHandles), volHandles, a, b, sigma, rho, m, aIsFixed, bIsFixed, sigmaIsFixed, rhoIsFixed, mIsFixed), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, double forward, DoubleVector strikes, boolean hasFloatingStrikes, double atmVolatility, DoubleVector vols, double a, double b, double sigma, double rho, double m, boolean isAFixed, boolean isBFixed, boolean isSigmaFixed, boolean isRhoFixed, boolean isMFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod method, DayCounter dc) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_5(Date.getCPtr(optionDate), optionDate, forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, atmVolatility, DoubleVector.getCPtr(vols), vols, a, b, sigma, rho, m, isAFixed, isBFixed, isSigmaFixed, isRhoFixed, isMFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(method), method, DayCounter.getCPtr(dc), dc), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, double forward, DoubleVector strikes, boolean hasFloatingStrikes, double atmVolatility, DoubleVector vols, double a, double b, double sigma, double rho, double m, boolean isAFixed, boolean isBFixed, boolean isSigmaFixed, boolean isRhoFixed, boolean isMFixed, boolean vegaWeighted, EndCriteria endCriteria, OptimizationMethod method) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_6(Date.getCPtr(optionDate), optionDate, forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, atmVolatility, DoubleVector.getCPtr(vols), vols, a, b, sigma, rho, m, isAFixed, isBFixed, isSigmaFixed, isRhoFixed, isMFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria, OptimizationMethod.getCPtr(method), method), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, double forward, DoubleVector strikes, boolean hasFloatingStrikes, double atmVolatility, DoubleVector vols, double a, double b, double sigma, double rho, double m, boolean isAFixed, boolean isBFixed, boolean isSigmaFixed, boolean isRhoFixed, boolean isMFixed, boolean vegaWeighted, EndCriteria endCriteria) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_7(Date.getCPtr(optionDate), optionDate, forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, atmVolatility, DoubleVector.getCPtr(vols), vols, a, b, sigma, rho, m, isAFixed, isBFixed, isSigmaFixed, isRhoFixed, isMFixed, vegaWeighted, EndCriteria.getCPtr(endCriteria), endCriteria), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, double forward, DoubleVector strikes, boolean hasFloatingStrikes, double atmVolatility, DoubleVector vols, double a, double b, double sigma, double rho, double m, boolean isAFixed, boolean isBFixed, boolean isSigmaFixed, boolean isRhoFixed, boolean isMFixed, boolean vegaWeighted) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_8(Date.getCPtr(optionDate), optionDate, forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, atmVolatility, DoubleVector.getCPtr(vols), vols, a, b, sigma, rho, m, isAFixed, isBFixed, isSigmaFixed, isRhoFixed, isMFixed, vegaWeighted), true);
  }

  public SviInterpolatedSmileSection(Date optionDate, double forward, DoubleVector strikes, boolean hasFloatingStrikes, double atmVolatility, DoubleVector vols, double a, double b, double sigma, double rho, double m, boolean isAFixed, boolean isBFixed, boolean isSigmaFixed, boolean isRhoFixed, boolean isMFixed) {
    this(QuantLibJNI.new_SviInterpolatedSmileSection__SWIG_9(Date.getCPtr(optionDate), optionDate, forward, DoubleVector.getCPtr(strikes), strikes, hasFloatingStrikes, atmVolatility, DoubleVector.getCPtr(vols), vols, a, b, sigma, rho, m, isAFixed, isBFixed, isSigmaFixed, isRhoFixed, isMFixed), true);
  }

  public double a() {
    return QuantLibJNI.SviInterpolatedSmileSection_a(swigCPtr, this);
  }

  public double b() {
    return QuantLibJNI.SviInterpolatedSmileSection_b(swigCPtr, this);
  }

  public double sigma() {
    return QuantLibJNI.SviInterpolatedSmileSection_sigma(swigCPtr, this);
  }

  public double rho() {
    return QuantLibJNI.SviInterpolatedSmileSection_rho(swigCPtr, this);
  }

  public double m() {
    return QuantLibJNI.SviInterpolatedSmileSection_m(swigCPtr, this);
  }

  public double rmsError() {
    return QuantLibJNI.SviInterpolatedSmileSection_rmsError(swigCPtr, this);
  }

  public double maxError() {
    return QuantLibJNI.SviInterpolatedSmileSection_maxError(swigCPtr, this);
  }

  public EndCriteria.Type endCriteria() {
    return EndCriteria.Type.swigToEnum(QuantLibJNI.SviInterpolatedSmileSection_endCriteria(swigCPtr, this));
  }

}
