org.quantlib.ExchangeRate Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of quantlib Show documentation
Show all versions of quantlib Show documentation
Java language binding for QuantLib
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (https://www.swig.org).
* Version 4.2.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 ExchangeRate implements org.quantlib.helpers.QuantLibJNIHelpers.AutoCloseable {
private transient long swigCPtr;
protected transient boolean swigCMemOwn;
protected ExchangeRate(long cPtr, boolean cMemoryOwn) {
swigCMemOwn = cMemoryOwn;
swigCPtr = cPtr;
}
protected static long getCPtr(ExchangeRate obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
protected static long swigRelease(ExchangeRate obj) {
long ptr = 0;
if (obj != null) {
if (!obj.swigCMemOwn)
throw new RuntimeException("Cannot release ownership as memory is not owned");
ptr = obj.swigCPtr;
obj.swigCMemOwn = false;
obj.delete();
}
return ptr;
}
@SuppressWarnings({"deprecation", "removal"})
protected void finalize() {
delete();
}
public synchronized void delete() {
if (swigCPtr != 0) {
if (swigCMemOwn) {
swigCMemOwn = false;
QuantLibJNI.delete_ExchangeRate(swigCPtr);
}
swigCPtr = 0;
}
}
public ExchangeRate(Currency source, Currency target, double rate) {
this(QuantLibJNI.new_ExchangeRate(Currency.getCPtr(source), source, Currency.getCPtr(target), target, rate), true);
}
public Currency source() {
return new Currency(QuantLibJNI.ExchangeRate_source(swigCPtr, this), false);
}
public Currency target() {
return new Currency(QuantLibJNI.ExchangeRate_target(swigCPtr, this), false);
}
public ExchangeRate.Type type() {
return ExchangeRate.Type.swigToEnum(QuantLibJNI.ExchangeRate_type(swigCPtr, this));
}
public double rate() {
return QuantLibJNI.ExchangeRate_rate(swigCPtr, this);
}
public Money exchange(Money amount) {
return new Money(QuantLibJNI.ExchangeRate_exchange(swigCPtr, this, Money.getCPtr(amount), amount), true);
}
public static ExchangeRate chain(ExchangeRate r1, ExchangeRate r2) {
return new ExchangeRate(QuantLibJNI.ExchangeRate_chain(ExchangeRate.getCPtr(r1), r1, ExchangeRate.getCPtr(r2), r2), true);
}
public final static class Type {
public final static ExchangeRate.Type Direct = new ExchangeRate.Type("Direct");
public final static ExchangeRate.Type Derived = new ExchangeRate.Type("Derived");
public final int swigValue() {
return swigValue;
}
public String toString() {
return swigName;
}
public static Type swigToEnum(int swigValue) {
if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
return swigValues[swigValue];
for (int i = 0; i < swigValues.length; i++)
if (swigValues[i].swigValue == swigValue)
return swigValues[i];
throw new IllegalArgumentException("No enum " + Type.class + " with value " + swigValue);
}
private Type(String swigName) {
this.swigName = swigName;
this.swigValue = swigNext++;
}
private Type(String swigName, int swigValue) {
this.swigName = swigName;
this.swigValue = swigValue;
swigNext = swigValue+1;
}
private Type(String swigName, Type swigEnum) {
this.swigName = swigName;
this.swigValue = swigEnum.swigValue;
swigNext = this.swigValue+1;
}
private static Type[] swigValues = { Direct, Derived };
private static int swigNext = 0;
private final int swigValue;
private final String swigName;
}
}