summaryrefslogtreecommitdiff
path: root/src/main/java/sevenUnits
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2025-06-04 19:45:37 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2025-06-04 19:45:37 -0500
commit79e1653caf5c30667877a158433cbcd766a135af (patch)
tree891527e7365bf78eab3722704c1f74e57fbbca7d /src/main/java/sevenUnits
parentd80b80857e739eb32afd7625789944abd3afe376 (diff)
Add version numbers to all @since tags
Specifically, for every @since tag with a date, I added another that contains the correspending version. I did not add date @since tags to comments that do not have them, as that would be too tedious for what it's worth. These dates could still be found by using git bisect though.
Diffstat (limited to 'src/main/java/sevenUnits')
-rw-r--r--src/main/java/sevenUnits/ProgramInfo.java2
-rw-r--r--src/main/java/sevenUnits/unit/BaseDimension.java3
-rw-r--r--src/main/java/sevenUnits/unit/BaseUnit.java6
-rw-r--r--src/main/java/sevenUnits/unit/BritishImperial.java5
-rw-r--r--src/main/java/sevenUnits/unit/FunctionalUnit.java5
-rw-r--r--src/main/java/sevenUnits/unit/LinearUnit.java14
-rw-r--r--src/main/java/sevenUnits/unit/LinearUnitValue.java23
-rw-r--r--src/main/java/sevenUnits/unit/LoadingException.java1
-rw-r--r--src/main/java/sevenUnits/unit/Metric.java2
-rw-r--r--src/main/java/sevenUnits/unit/USCustomary.java5
-rw-r--r--src/main/java/sevenUnits/unit/Unit.java14
-rw-r--r--src/main/java/sevenUnits/unit/UnitDatabase.java24
-rw-r--r--src/main/java/sevenUnits/unit/UnitPrefix.java11
-rw-r--r--src/main/java/sevenUnits/unit/UnitType.java2
-rw-r--r--src/main/java/sevenUnits/unit/UnitValue.java6
-rw-r--r--src/main/java/sevenUnits/utils/ConditionalExistenceCollections.java14
-rw-r--r--src/main/java/sevenUnits/utils/DecimalComparison.java1
-rw-r--r--src/main/java/sevenUnits/utils/ExpressionParser.java2
-rw-r--r--src/main/java/sevenUnits/utils/NameSymbol.java14
-rw-r--r--src/main/java/sevenUnits/utils/Nameable.java7
-rw-r--r--src/main/java/sevenUnits/utils/ObjectProduct.java15
-rw-r--r--src/main/java/sevenUnits/utils/SemanticVersionNumber.java48
-rw-r--r--src/main/java/sevenUnits/utils/UncertainDouble.java24
23 files changed, 222 insertions, 26 deletions
diff --git a/src/main/java/sevenUnits/ProgramInfo.java b/src/main/java/sevenUnits/ProgramInfo.java
index dda5d2c..9b9832e 100644
--- a/src/main/java/sevenUnits/ProgramInfo.java
+++ b/src/main/java/sevenUnits/ProgramInfo.java
@@ -21,8 +21,8 @@ import sevenUnits.utils.SemanticVersionNumber;
/**
* Information about 7Units
*
- * @since 0.3.1
* @since 2021-06-28
+ * @since v0.3.1
*/
public final class ProgramInfo {
diff --git a/src/main/java/sevenUnits/unit/BaseDimension.java b/src/main/java/sevenUnits/unit/BaseDimension.java
index cfa6af9..fe7b772 100644
--- a/src/main/java/sevenUnits/unit/BaseDimension.java
+++ b/src/main/java/sevenUnits/unit/BaseDimension.java
@@ -26,6 +26,7 @@ import sevenUnits.utils.Nameable;
*
* @author Adrien Hopkins
* @since 2019-10-16
+ * @since v0.3.0
*/
public final class BaseDimension implements Nameable {
/**
@@ -35,6 +36,7 @@ public final class BaseDimension implements Nameable {
* @param symbol symbol used for dimension
* @return dimension
* @since 2019-10-16
+ * @since v0.3.0
*/
public static BaseDimension valueOf(final String name, final String symbol) {
return new BaseDimension(name, symbol);
@@ -57,6 +59,7 @@ public final class BaseDimension implements Nameable {
* @param symbol symbol of unit
* @throws NullPointerException if any argument is null
* @since 2019-10-16
+ * @since v0.3.0
*/
private BaseDimension(final String name, final String symbol) {
this.name = Objects.requireNonNull(name, "name must not be null.");
diff --git a/src/main/java/sevenUnits/unit/BaseUnit.java b/src/main/java/sevenUnits/unit/BaseUnit.java
index 0d375f8..2898de5 100644
--- a/src/main/java/sevenUnits/unit/BaseUnit.java
+++ b/src/main/java/sevenUnits/unit/BaseUnit.java
@@ -31,6 +31,7 @@ import sevenUnits.utils.NameSymbol;
*
* @author Adrien Hopkins
* @since 2019-10-16
+ * @since v0.3.0
*/
public final class BaseUnit extends Unit {
/**
@@ -41,6 +42,7 @@ public final class BaseUnit extends Unit {
* @param symbol symbol of unit
* @return base unit
* @since 2019-10-16
+ * @since v0.3.0
*/
public static BaseUnit valueOf(final BaseDimension dimension,
final String name, final String symbol) {
@@ -56,6 +58,7 @@ public final class BaseUnit extends Unit {
* @param otherNames other possible names of unit
* @return base unit
* @since 2019-10-21
+ * @since v0.3.0
*/
public static BaseUnit valueOf(final BaseDimension dimension,
final String name, final String symbol, final Set<String> otherNames) {
@@ -75,6 +78,7 @@ public final class BaseUnit extends Unit {
* @param symbol symbol of unit
* @throws NullPointerException if any argument is null
* @since 2019-10-16
+ * @since v0.3.0
*/
private BaseUnit(final BaseDimension dimension, final String primaryName,
final String symbol, final Set<String> otherNames) {
@@ -90,6 +94,7 @@ public final class BaseUnit extends Unit {
*
* @return this unit as a {@code LinearUnit}
* @since 2019-10-16
+ * @since v0.3.0
*/
public LinearUnit asLinearUnit() {
return LinearUnit.valueOf(this.getBase(), 1);
@@ -108,6 +113,7 @@ public final class BaseUnit extends Unit {
/**
* @return dimension
* @since 2019-10-16
+ * @since v0.3.0
*/
public final BaseDimension getBaseDimension() {
return this.dimension;
diff --git a/src/main/java/sevenUnits/unit/BritishImperial.java b/src/main/java/sevenUnits/unit/BritishImperial.java
index e327055..a6fd43f 100644
--- a/src/main/java/sevenUnits/unit/BritishImperial.java
+++ b/src/main/java/sevenUnits/unit/BritishImperial.java
@@ -23,6 +23,7 @@ import sevenUnits.utils.NameSymbol;
*
* @author Adrien Hopkins
* @since 2019-10-21
+ * @since v0.3.0
*/
// this class is just constants, most of which are obvious from the variable name
// so no need to check for missing values
@@ -33,6 +34,7 @@ public final class BritishImperial {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Area {
public static final LinearUnit SQUARE_FOOT = Length.FOOT.toExponent(2);
@@ -48,6 +50,7 @@ public final class BritishImperial {
*
* @author Adrien Hopkins
* @since 2019-10-28
+ * @since v0.3.0
*/
public static final class Length {
/**
@@ -81,6 +84,7 @@ public final class BritishImperial {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Mass {
public static final LinearUnit POUND = Metric.GRAM.times(453.59237);
@@ -99,6 +103,7 @@ public final class BritishImperial {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Volume {
public static final LinearUnit FLUID_OUNCE = Metric.LITRE
diff --git a/src/main/java/sevenUnits/unit/FunctionalUnit.java b/src/main/java/sevenUnits/unit/FunctionalUnit.java
index fb24629..41db164 100644
--- a/src/main/java/sevenUnits/unit/FunctionalUnit.java
+++ b/src/main/java/sevenUnits/unit/FunctionalUnit.java
@@ -27,6 +27,7 @@ import sevenUnits.utils.ObjectProduct;
*
* @author Adrien Hopkins
* @since 2019-05-22
+ * @since v0.3.0
*/
final class FunctionalUnit extends Unit {
/**
@@ -34,6 +35,7 @@ final class FunctionalUnit extends Unit {
* that value expressed in this unit.
*
* @since 2019-05-22
+ * @since v0.3.0
*/
private final DoubleUnaryOperator converterFrom;
@@ -42,6 +44,7 @@ final class FunctionalUnit extends Unit {
* value expressed in the unit's base.
*
* @since 2019-05-22
+ * @since v0.3.0
*/
private final DoubleUnaryOperator converterTo;
@@ -55,6 +58,7 @@ final class FunctionalUnit extends Unit {
* and returns that value expressed in the unit's base.
* @throws NullPointerException if any argument is null
* @since 2019-05-22
+ * @since v0.3.0
*/
public FunctionalUnit(final ObjectProduct<BaseUnit> base,
final DoubleUnaryOperator converterFrom,
@@ -77,6 +81,7 @@ final class FunctionalUnit extends Unit {
* @param ns name and symbol of resulting unit
* @throws NullPointerException if any argument is null
* @since 2019-05-22
+ * @since v0.3.0
*/
public FunctionalUnit(final ObjectProduct<BaseUnit> base,
final DoubleUnaryOperator converterFrom,
diff --git a/src/main/java/sevenUnits/unit/LinearUnit.java b/src/main/java/sevenUnits/unit/LinearUnit.java
index 6c1aba3..7191196 100644
--- a/src/main/java/sevenUnits/unit/LinearUnit.java
+++ b/src/main/java/sevenUnits/unit/LinearUnit.java
@@ -29,6 +29,7 @@ import sevenUnits.utils.UncertainDouble;
*
* @author Adrien Hopkins
* @since 2019-10-16
+ * @since v0.3.0
*/
public final class LinearUnit extends Unit {
/**
@@ -39,6 +40,7 @@ public final class LinearUnit extends Unit {
* @param value value to convert
* @return value expressed as a {@code LinearUnit}
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if unit is null
*/
public static LinearUnit fromUnitValue(final Unit unit, final double value) {
@@ -56,6 +58,7 @@ public final class LinearUnit extends Unit {
* @param ns name(s) and symbol of unit
* @return value expressed as a {@code LinearUnit}
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if unit or ns is null
*/
public static LinearUnit fromUnitValue(final Unit unit, final double value,
@@ -70,6 +73,7 @@ public final class LinearUnit extends Unit {
* @return the base unit associated with {@code unit}, as a
* {@code LinearUnit}.
* @since 2020-10-02
+ * @since v0.3.0
*/
public static LinearUnit getBase(final Unit unit) {
return new LinearUnit(unit.getBase(), 1, NameSymbol.EMPTY);
@@ -84,6 +88,7 @@ public final class LinearUnit extends Unit {
* @param conversionFactor number to multiply base by
* @return product of base and conversion factor
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if unitBase is null
*/
public static LinearUnit valueOf(final ObjectProduct<BaseUnit> unitBase,
@@ -101,6 +106,7 @@ public final class LinearUnit extends Unit {
* @param ns name(s) and symbol of unit
* @return product of base and conversion factor
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if unitBase is null
*/
public static LinearUnit valueOf(final ObjectProduct<BaseUnit> unitBase,
@@ -116,6 +122,7 @@ public final class LinearUnit extends Unit {
* </pre>
*
* @since 2019-10-16
+ * @since v0.3.0
*/
private final double conversionFactor;
@@ -125,6 +132,7 @@ public final class LinearUnit extends Unit {
* @param unitBase base of linear unit
* @param conversionFactor conversion factor between base and unit
* @since 2019-10-16
+ * @since v0.3.0
*/
private LinearUnit(final ObjectProduct<BaseUnit> unitBase,
final double conversionFactor, final NameSymbol ns) {
@@ -150,6 +158,7 @@ public final class LinearUnit extends Unit {
* @param value value to convert
* @return converted value
* @since 2019-09-07
+ * @since v0.3.0
* @throws IllegalArgumentException if {@code other} is incompatible for
* conversion with this unit (as tested by
* {@link Unit#canConvertTo}).
@@ -181,6 +190,7 @@ public final class LinearUnit extends Unit {
* Converts an {@code UncertainDouble} to the base unit.
*
* @since 2020-09-07
+ * @since v0.3.0
*/
UncertainDouble convertToBase(final UncertainDouble value) {
return value.timesExact(this.getConversionFactor());
@@ -249,6 +259,7 @@ public final class LinearUnit extends Unit {
/**
* @return conversion factor
* @since 2019-10-16
+ * @since v0.3.0
*/
public double getConversionFactor() {
return this.conversionFactor;
@@ -270,6 +281,7 @@ public final class LinearUnit extends Unit {
* is a {@code BaseUnit b} where
* {@code b.asLinearUnit().equals(this)} returns {@code true}.)
* @since 2019-10-16
+ * @since v0.3.0
*/
public boolean isBase() {
return this.isCoherent() && this.getBase().isSingleObject();
@@ -278,6 +290,7 @@ public final class LinearUnit extends Unit {
/**
* @return whether this unit is coherent (i.e. has conversion factor 1)
* @since 2019-10-16
+ * @since v0.3.0
*/
public boolean isCoherent() {
return this.getConversionFactor() == 1;
@@ -403,6 +416,7 @@ public final class LinearUnit extends Unit {
* @param exponent exponent to raise unit to
* @return result of rounded exponentation
* @since 2024-08-22
+ * @since v1.0.0
* @see ObjectProduct#toExponentRounded
*/
public LinearUnit toExponentRounded(final double exponent) {
diff --git a/src/main/java/sevenUnits/unit/LinearUnitValue.java b/src/main/java/sevenUnits/unit/LinearUnitValue.java
index 8d30907..86520d7 100644
--- a/src/main/java/sevenUnits/unit/LinearUnitValue.java
+++ b/src/main/java/sevenUnits/unit/LinearUnitValue.java
@@ -34,6 +34,7 @@ import sevenUnits.utils.UncertainDouble;
*
* @author Adrien Hopkins
* @since 2020-07-26
+ * @since v0.3.0
*/
public final class LinearUnitValue {
/** The value 1 as a LinearUnitValue. */
@@ -46,6 +47,7 @@ public final class LinearUnitValue {
* @param value value to express
* @return exact {@code LinearUnitValue} instance
* @since 2020-07-26
+ * @since v0.3.0
*/
public static final LinearUnitValue getExact(final LinearUnit unit,
final double value) {
@@ -61,6 +63,7 @@ public final class LinearUnitValue {
* @param value value to express
* @return uncertain {@code LinearUnitValue} instance
* @since 2020-07-26
+ * @since v0.3.0
*/
public static final LinearUnitValue of(final LinearUnit unit,
final UncertainDouble value) {
@@ -77,6 +80,7 @@ public final class LinearUnitValue {
* @param unit unit to express as
* @param value value to express
* @since 2020-07-26
+ * @since v0.3.0
*/
private LinearUnitValue(final LinearUnit unit, final UncertainDouble value) {
this.unit = unit;
@@ -87,6 +91,7 @@ public final class LinearUnitValue {
* @return this value as a {@code UnitValue}. All uncertainty information is
* removed from the returned value.
* @since 2020-08-04
+ * @since v0.3.0
*/
public final UnitValue asUnitValue() {
return UnitValue.of(this.unit, this.value.value());
@@ -96,6 +101,7 @@ public final class LinearUnitValue {
* @param other a {@code LinearUnit}
* @return true iff this value can be represented with {@code other}.
* @since 2020-07-26
+ * @since v0.3.0
*/
public final boolean canConvertTo(final LinearUnit other) {
return this.unit.canConvertTo(other);
@@ -108,6 +114,7 @@ public final class LinearUnitValue {
* @param other new unit to express value in
* @return value expressed in {@code other}
* @since 2020-07-26
+ * @since v0.3.0
*/
public final LinearUnitValue convertTo(final LinearUnit other) {
return LinearUnitValue.of(other, this.unit.convertTo(other, this.value));
@@ -122,6 +129,7 @@ public final class LinearUnitValue {
* @throws IllegalArgumentException if no units are provided or units
* provided have incompatible bases
* @since 2024-08-15
+ * @since v1.0.0
*/
public final List<LinearUnitValue> convertToMultiple(
final List<LinearUnit> others) {
@@ -155,6 +163,7 @@ public final class LinearUnitValue {
* @param divisor value to divide by
* @return multiplied value
* @since 2020-07-28
+ * @since v0.3.0
*/
public LinearUnitValue dividedBy(final double divisor) {
return LinearUnitValue.of(this.unit, this.value.dividedByExact(divisor));
@@ -166,6 +175,7 @@ public final class LinearUnitValue {
* @param divisor value to multiply by
* @return quotient
* @since 2020-07-28
+ * @since v0.3.0
*/
public LinearUnitValue dividedBy(final LinearUnitValue divisor) {
return LinearUnitValue.of(this.unit.dividedBy(divisor.unit),
@@ -178,6 +188,7 @@ public final class LinearUnitValue {
* km) returns true.
*
* @since 2020-07-26
+ * @since v0.3.0
* @see #equals(Object, boolean)
*/
@Override
@@ -202,6 +213,7 @@ public final class LinearUnitValue {
* @return true iff this and obj are equal
*
* @since 2020-07-28
+ * @since v0.3.0
*/
public boolean equals(final Object obj, final boolean avoidFPErrors) {
if (!avoidFPErrors)
@@ -219,6 +231,7 @@ public final class LinearUnitValue {
* @return true iff this and other are within each other's uncertainty range
*
* @since 2020-07-26
+ * @since v0.3.0
*/
public boolean equivalent(final LinearUnitValue other) {
if (other == null
@@ -234,6 +247,7 @@ public final class LinearUnitValue {
/**
* @return the unit
* @since 2020-09-29
+ * @since v0.3.0
*/
public final LinearUnit getUnit() {
return this.unit;
@@ -242,6 +256,7 @@ public final class LinearUnitValue {
/**
* @return the value
* @since 2020-09-29
+ * @since v0.3.0
*/
public final UncertainDouble getValue() {
return this.value;
@@ -250,6 +265,7 @@ public final class LinearUnitValue {
/**
* @return the exact value
* @since 2020-09-07
+ * @since v0.3.0
*/
public final double getValueExact() {
return this.value.value();
@@ -270,6 +286,7 @@ public final class LinearUnitValue {
* @throws IllegalArgumentException if {@code subtrahend} has a unit that is
* not compatible for addition
* @since 2020-07-26
+ * @since v0.3.0
*/
public LinearUnitValue minus(final LinearUnitValue subtrahend) {
Objects.requireNonNull(subtrahend, "subtrahend may not be null");
@@ -292,6 +309,7 @@ public final class LinearUnitValue {
* @throws IllegalArgumentException if {@code addend} has a unit that is not
* compatible for addition
* @since 2020-07-26
+ * @since v0.3.0
*/
public LinearUnitValue plus(final LinearUnitValue addend) {
Objects.requireNonNull(addend, "addend may not be null");
@@ -312,6 +330,7 @@ public final class LinearUnitValue {
* @param multiplier value to multiply by
* @return multiplied value
* @since 2020-07-28
+ * @since v0.3.0
*/
public LinearUnitValue times(final double multiplier) {
return LinearUnitValue.of(this.unit, this.value.timesExact(multiplier));
@@ -323,6 +342,7 @@ public final class LinearUnitValue {
* @param multiplier value to multiply by
* @return product
* @since 2020-07-28
+ * @since v0.3.0
*/
public LinearUnitValue times(final LinearUnitValue multiplier) {
return LinearUnitValue.of(this.unit.times(multiplier.unit),
@@ -335,6 +355,7 @@ public final class LinearUnitValue {
* @param exponent exponent to raise to
* @return result of exponentiation
* @since 2020-07-28
+ * @since v0.3.0
*/
public LinearUnitValue toExponent(final int exponent) {
return LinearUnitValue.of(this.unit.toExponent(exponent),
@@ -348,6 +369,7 @@ public final class LinearUnitValue {
* @return result of exponentation
*
* @since 2024-08-22
+ * @since v1.0.0
* @see ObjectProduct#toExponentRounded
*/
public LinearUnitValue toExponentRounded(final double exponent) {
@@ -375,6 +397,7 @@ public final class LinearUnitValue {
* @return string representing this value
*
* @since 2020-07-26
+ * @since v0.3.0
*/
public String toString(final boolean showUncertainty,
RoundingMode roundingMode) {
diff --git a/src/main/java/sevenUnits/unit/LoadingException.java b/src/main/java/sevenUnits/unit/LoadingException.java
index b806147..7b3d708 100644
--- a/src/main/java/sevenUnits/unit/LoadingException.java
+++ b/src/main/java/sevenUnits/unit/LoadingException.java
@@ -25,6 +25,7 @@ import java.util.Optional;
*
* @author Adrien Hopkins
* @since 2024-08-22
+ * @since v1.0.0
*/
public final class LoadingException extends RuntimeException {
/** The type of file that was being loaded. */
diff --git a/src/main/java/sevenUnits/unit/Metric.java b/src/main/java/sevenUnits/unit/Metric.java
index 166cbcf..34fd0b8 100644
--- a/src/main/java/sevenUnits/unit/Metric.java
+++ b/src/main/java/sevenUnits/unit/Metric.java
@@ -36,6 +36,7 @@ import sevenUnits.utils.ObjectProduct;
*
* @author Adrien Hopkins
* @since 2019-10-16
+ * @since v0.3.0
*/
// this class is just constants, most of which are obvious from the variable name
// so no need to check for missing values
@@ -109,6 +110,7 @@ public final class Metric {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Constants {
public static final LinearUnit EARTH_GRAVITY = METRE.dividedBy(SECOND)
diff --git a/src/main/java/sevenUnits/unit/USCustomary.java b/src/main/java/sevenUnits/unit/USCustomary.java
index 1923d9e..be8c5e2 100644
--- a/src/main/java/sevenUnits/unit/USCustomary.java
+++ b/src/main/java/sevenUnits/unit/USCustomary.java
@@ -21,6 +21,7 @@ package sevenUnits.unit;
*
* @author Adrien Hopkins
* @since 2019-10-21
+ * @since v0.3.0
*/
// this class is just constants, most of which are obvious from the variable name
// so no need to check for missing values
@@ -31,6 +32,7 @@ public final class USCustomary {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Area {
public static final LinearUnit SQUARE_SURVEY_FOOT = Length.SURVEY_FOOT
@@ -49,6 +51,7 @@ public final class USCustomary {
*
* @author Adrien Hopkins
* @since 2019-10-28
+ * @since v0.3.0
*/
public static final class Length {
public static final LinearUnit FOOT = BritishImperial.Length.FOOT;
@@ -79,6 +82,7 @@ public final class USCustomary {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Mass {
public static final LinearUnit GRAIN = BritishImperial.Mass.GRAIN;
@@ -99,6 +103,7 @@ public final class USCustomary {
*
* @author Adrien Hopkins
* @since 2019-11-08
+ * @since v0.3.0
*/
public static final class Volume {
public static final LinearUnit CUBIC_INCH = Length.INCH.toExponent(3);
diff --git a/src/main/java/sevenUnits/unit/Unit.java b/src/main/java/sevenUnits/unit/Unit.java
index 5d67ed0..d651fe2 100644
--- a/src/main/java/sevenUnits/unit/Unit.java
+++ b/src/main/java/sevenUnits/unit/Unit.java
@@ -31,6 +31,7 @@ import sevenUnits.utils.ObjectProduct;
*
* @author Adrien Hopkins
* @since 2019-10-16
+ * @since v0.3.0
*/
public abstract class Unit implements Nameable {
/**
@@ -51,6 +52,7 @@ public abstract class Unit implements Nameable {
* and returns that value expressed in the unit's base.
* @return a unit that uses the provided functions to convert.
* @since 2019-05-22
+ * @since v0.3.0
* @throws NullPointerException if any argument is null
*/
public static final Unit fromConversionFunctions(
@@ -79,6 +81,7 @@ public abstract class Unit implements Nameable {
* @param ns names and symbol of unit
* @return a unit that uses the provided functions to convert.
* @since 2019-05-22
+ * @since v0.3.0
* @throws NullPointerException if any argument is null
*/
public static final Unit fromConversionFunctions(
@@ -92,6 +95,7 @@ public abstract class Unit implements Nameable {
* The combination of units that this unit is based on.
*
* @since 2019-10-16
+ * @since v0.3.0
*/
private final ObjectProduct<BaseUnit> unitBase;
@@ -99,6 +103,7 @@ public abstract class Unit implements Nameable {
* This unit's name(s) and symbol
*
* @since 2020-09-07
+ * @since v0.3.0
*/
private final NameSymbol nameSymbol;
@@ -106,6 +111,7 @@ public abstract class Unit implements Nameable {
* Cache storing the result of getDimension()
*
* @since 2019-10-16
+ * @since v0.3.0
*/
private transient ObjectProduct<BaseDimension> dimension = null;
@@ -113,6 +119,7 @@ public abstract class Unit implements Nameable {
* A constructor that constructs {@code BaseUnit} instances.
*
* @since 2019-10-16
+ * @since v0.3.0
*/
Unit(final NameSymbol nameSymbol) {
if (this instanceof BaseUnit) {
@@ -128,6 +135,7 @@ public abstract class Unit implements Nameable {
* @param unitBase base of unit
* @param ns names and symbol of unit
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if unitBase or ns is null
*/
protected Unit(ObjectProduct<BaseUnit> unitBase, NameSymbol ns) {
@@ -187,6 +195,7 @@ public abstract class Unit implements Nameable {
* @param value value to convert
* @return converted value
* @since 2019-05-22
+ * @since v0.3.0
* @throws IllegalArgumentException if {@code other} is incompatible for
* conversion with this unit (as tested by
* {@link Unit#canConvertTo}).
@@ -255,6 +264,7 @@ public abstract class Unit implements Nameable {
/**
* @return the nameSymbol
* @since 2020-09-07
+ * @since v0.3.0
*/
@Override
public final NameSymbol getNameSymbol() {
@@ -281,6 +291,7 @@ public abstract class Unit implements Nameable {
* @return true iff this unit is metric.
*
* @since 2020-08-27
+ * @since v0.3.0
*/
public final boolean isMetric() {
// first condition - check that it is a linear unit
@@ -302,6 +313,7 @@ public abstract class Unit implements Nameable {
/**
* @return a string representing this unit's definition
* @since 2022-03-10
+ * @since v0.3.0
*/
public String toDefinitionString() {
if (!this.unitBase.getNameSymbol().isEmpty())
@@ -314,6 +326,7 @@ public abstract class Unit implements Nameable {
/**
* @return a string containing both this unit's name and its definition
* @since 2022-03-10
+ * @since v0.3.0
*/
public final String toFullString() {
return this.toString() + " (" + this.toDefinitionString() + ")";
@@ -333,6 +346,7 @@ public abstract class Unit implements Nameable {
* @param ns name(s) and symbol to use
* @return a copy of this unit with provided name(s) and symbol
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if ns is null
*/
public Unit withName(final NameSymbol ns) {
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java
index 6cf794b..b0d026f 100644
--- a/src/main/java/sevenUnits/unit/UnitDatabase.java
+++ b/src/main/java/sevenUnits/unit/UnitDatabase.java
@@ -138,6 +138,7 @@ public final class UnitDatabase {
/**
* @since 2019-05-03
+ * @since v0.3.0
*/
@Override
public boolean equals(final Object o) {
@@ -160,6 +161,7 @@ public final class UnitDatabase {
/**
* @since 2019-05-03
+ * @since v0.3.0
*/
@Override
public int hashCode() {
@@ -181,6 +183,7 @@ public final class UnitDatabase {
* value.
*
* @since 2019-05-03
+ * @since v0.3.0
*/
@Override
public String toString() {
@@ -307,6 +310,7 @@ public final class UnitDatabase {
* @return the next element in the iterator, without iterating over
* it
* @since 2019-05-03
+ * @since v0.3.0
*/
private Entry<String, Unit> peek() {
if (!this.hasNext())
@@ -333,6 +337,7 @@ public final class UnitDatabase {
* of the representation are unspecified and subject to change.
*
* @since 2019-05-03
+ * @since v0.3.0
*/
@Override
public String toString() {
@@ -622,6 +627,7 @@ public final class UnitDatabase {
* @return the next element in the iterator, without iterating over
* it
* @since 2019-05-03
+ * @since v0.3.0
*/
private String peek() {
if (!this.hasNext())
@@ -645,6 +651,7 @@ public final class UnitDatabase {
* of the representation are unspecified and subject to change.
*
* @since 2019-05-03
+ * @since v0.3.0
*/
@Override
public String toString() {
@@ -1136,6 +1143,7 @@ public final class UnitDatabase {
* @param exponentUnit exponent
* @return result
* @since 2020-08-04
+ * @since v0.3.0
*/
private static final LinearUnitValue exponentiateUnitValues(
final LinearUnitValue base, final LinearUnitValue exponentValue) {
@@ -1151,6 +1159,7 @@ public final class UnitDatabase {
/**
* @return true if entry represents a removable duplicate entry of map.
* @since 2021-05-22
+ * @since v0.3.0
*/
static <T> boolean isRemovableDuplicate(Map<String, T> map,
Entry<String, T> entry) {
@@ -1236,6 +1245,7 @@ public final class UnitDatabase {
* A parser that can parse unit value expressions.
*
* @since 2020-08-04
+ * @since v0.3.0
*/
private final ExpressionParser<LinearUnitValue> unitValueExpressionParser = new ExpressionParser.Builder<>(
this::getLinearUnitValue)
@@ -1297,6 +1307,7 @@ public final class UnitDatabase {
* @param prefixRepetitionRule the rule that determines when prefix
* repetition is allowed
* @since 2020-08-26
+ * @since v0.3.0
*/
public UnitDatabase(Predicate<List<UnitPrefix>> prefixRepetitionRule) {
this.prefixlessUnits = new HashMap<>();
@@ -1468,6 +1479,7 @@ public final class UnitDatabase {
* @param name name of unit set
* @param value unit set to add
* @since 2024-08-16
+ * @since v1.0.0
*/
public void addUnitSet(String name, List<LinearUnit> value) {
if (value.isEmpty())
@@ -1486,6 +1498,7 @@ public final class UnitDatabase {
* Removes all units, unit sets, prefixes and dimensions from this database.
*
* @since 2022-02-26
+ * @since v0.4.0
*/
public void clear() {
this.dimensions.clear();
@@ -1538,6 +1551,7 @@ public final class UnitDatabase {
* @return true iff there is a unit set with this name
*
* @since 2024-08-16
+ * @since v1.0.0
*/
public boolean containsUnitSetName(String name) {
return this.unitSets.containsKey(name);
@@ -1559,6 +1573,7 @@ public final class UnitDatabase {
* @param expression expression to parse
* @return {@code LinearUnitValue} representing value of expression
* @since 2020-08-04
+ * @since v0.3.0
*/
public LinearUnitValue evaluateUnitExpression(final String expression) {
Objects.requireNonNull(expression, "expression must not be null.");
@@ -1697,6 +1712,7 @@ public final class UnitDatabase {
* @param name name of unit
* @return {@code LinearUnitValue} instance
* @since 2020-08-04
+ * @since v0.3.0
*/
LinearUnitValue getLinearUnitValue(final String name) {
try {
@@ -1735,6 +1751,7 @@ public final class UnitDatabase {
* @param unitName name of unit
* @return prefixes
* @since 2020-08-26
+ * @since v0.3.0
*/
List<UnitPrefix> getPrefixesFromName(final String unitName) {
final List<UnitPrefix> prefixes = new ArrayList<>();
@@ -1800,6 +1817,7 @@ public final class UnitDatabase {
/**
* @return the prefixRepetitionRule
* @since 2020-08-26
+ * @since v0.3.0
*/
public final Predicate<List<UnitPrefix>> getPrefixRepetitionRule() {
return this.prefixRepetitionRule;
@@ -1904,6 +1922,7 @@ public final class UnitDatabase {
* @return unit set with that name
*
* @since 2024-08-16
+ * @since v1.0.0
*/
public List<LinearUnit> getUnitSet(String name) {
final List<LinearUnit> unitSet = this.unitSets.get(name);
@@ -1916,6 +1935,7 @@ public final class UnitDatabase {
* Parses a semicolon-separated expression to get the unit set being used.
*
* @since 2024-08-22
+ * @since v1.0.0
*/
List<LinearUnit> getUnitSetFromExpression(String expression) {
final String[] parts = expression.split(";");
@@ -1991,6 +2011,7 @@ public final class UnitDatabase {
* @param stream stream to load from
* @return list of all errors that happened loading the stream
* @since 2021-03-27
+ * @since v0.3.0
*/
public List<LoadingException> loadDimensionsFromStream(
final InputStream stream) {
@@ -2062,6 +2083,7 @@ public final class UnitDatabase {
* @param stream stream to load from
* @return list of all errors that happened loading the stream
* @since 2021-03-27
+ * @since v0.3.0
*/
public List<LoadingException> loadUnitsFromStream(InputStream stream) {
final List<LoadingException> errors = new ArrayList<>();
@@ -2098,6 +2120,7 @@ public final class UnitDatabase {
/**
* @param prefixRepetitionRule the prefixRepetitionRule to set
* @since 2020-08-26
+ * @since v0.3.0
*/
public final void setPrefixRepetitionRule(
Predicate<List<UnitPrefix>> prefixRepetitionRule) {
@@ -2169,6 +2192,7 @@ public final class UnitDatabase {
/**
* @return an unmodifiable map mapping names to unit sets
* @since 2024-08-16
+ * @since v1.0.0
*/
public Map<String, List<LinearUnit>> unitSetMap() {
return Collections.unmodifiableMap(this.unitSets);
diff --git a/src/main/java/sevenUnits/unit/UnitPrefix.java b/src/main/java/sevenUnits/unit/UnitPrefix.java
index 6ac9128..0fd3421 100644
--- a/src/main/java/sevenUnits/unit/UnitPrefix.java
+++ b/src/main/java/sevenUnits/unit/UnitPrefix.java
@@ -28,6 +28,7 @@ import sevenUnits.utils.Nameable;
*
* @author Adrien Hopkins
* @since 2019-10-16
+ * @since v0.3.0
*/
public final class UnitPrefix implements Nameable {
/**
@@ -36,6 +37,7 @@ public final class UnitPrefix implements Nameable {
* @param multiplier multiplier of prefix
* @return prefix
* @since 2019-10-16
+ * @since v0.3.0
*/
public static UnitPrefix valueOf(final double multiplier) {
return new UnitPrefix(multiplier, NameSymbol.EMPTY);
@@ -48,6 +50,7 @@ public final class UnitPrefix implements Nameable {
* @param ns name(s) and symbol of prefix
* @return prefix
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if ns is null
*/
public static UnitPrefix valueOf(final double multiplier,
@@ -60,6 +63,7 @@ public final class UnitPrefix implements Nameable {
* This prefix's name(s) and symbol.
*
* @since 2022-04-16
+ * @since v0.4.0
*/
private final NameSymbol nameSymbol;
@@ -67,6 +71,7 @@ public final class UnitPrefix implements Nameable {
* The number that this prefix multiplies units by
*
* @since 2019-10-16
+ * @since v0.3.0
*/
private final double multiplier;
@@ -88,6 +93,7 @@ public final class UnitPrefix implements Nameable {
* @param divisor number to divide by
* @return quotient of prefix and scalar
* @since 2019-10-16
+ * @since v0.3.0
*/
public UnitPrefix dividedBy(final double divisor) {
return valueOf(this.getMultiplier() / divisor);
@@ -143,6 +149,7 @@ public final class UnitPrefix implements Nameable {
/**
* @return prefix's multiplier
* @since 2019-11-26
+ * @since v0.3.0
*/
public double getMultiplier() {
return this.multiplier;
@@ -169,6 +176,7 @@ public final class UnitPrefix implements Nameable {
* @param multiplicand number to multiply by
* @return product of prefix and scalar
* @since 2019-10-16
+ * @since v0.3.0
*/
public UnitPrefix times(final double multiplicand) {
return valueOf(this.getMultiplier() * multiplicand);
@@ -180,6 +188,7 @@ public final class UnitPrefix implements Nameable {
* @return sum of prefixes
*
* @since 2024-03-03
+ * @since v0.5.0
*/
public UnitPrefix plus(final UnitPrefix other) {
return valueOf(this.getMultiplier() + other.getMultiplier());
@@ -191,6 +200,7 @@ public final class UnitPrefix implements Nameable {
* @return difference of prefixes
*
* @since 2024-03-03
+ * @since v0.5.0
*/
public UnitPrefix minus(final UnitPrefix other) {
return valueOf(this.getMultiplier() - other.getMultiplier());
@@ -239,6 +249,7 @@ public final class UnitPrefix implements Nameable {
* @param ns name(s) and symbol to use
* @return copy of this prefix with provided name(s) and symbol
* @since 2019-11-26
+ * @since v0.3.0
* @throws NullPointerException if ns is null
*/
public UnitPrefix withName(final NameSymbol ns) {
diff --git a/src/main/java/sevenUnits/unit/UnitType.java b/src/main/java/sevenUnits/unit/UnitType.java
index d445418..a331d3d 100644
--- a/src/main/java/sevenUnits/unit/UnitType.java
+++ b/src/main/java/sevenUnits/unit/UnitType.java
@@ -30,6 +30,7 @@ import java.util.function.Predicate;
* </ul>
*
* @since 2022-04-10
+ * @since v0.4.0
*/
public enum UnitType {
/** Units that pass {@link Unit#isMetric} */
@@ -51,6 +52,7 @@ public enum UnitType {
* @param isSemiMetric predicate to determine if a unit is semi-metric
* @return type of unit
* @since 2022-04-18
+ * @since v0.4.0
*/
public static final UnitType getType(Unit u, Predicate<Unit> isSemiMetric) {
if (isSemiMetric.test(u))
diff --git a/src/main/java/sevenUnits/unit/UnitValue.java b/src/main/java/sevenUnits/unit/UnitValue.java
index 97b7e54..4003c17 100644
--- a/src/main/java/sevenUnits/unit/UnitValue.java
+++ b/src/main/java/sevenUnits/unit/UnitValue.java
@@ -29,6 +29,7 @@ import sevenUnits.utils.NameSymbol;
*
* @author Adrien Hopkins
* @since 2020-07-26
+ * @since v0.3.0
*/
public final class UnitValue {
/**
@@ -59,6 +60,7 @@ public final class UnitValue {
* @param other unit to try to convert to
* @return true if this value can be converted to {@code other}.
* @since 2020-10-01
+ * @since v0.3.0
*/
public final boolean canConvertTo(Unit other) {
return this.unit.canConvertTo(other);
@@ -84,6 +86,7 @@ public final class UnitValue {
* needed.
* @return this unit as a {@link LinearUnitValue}
* @since 2020-09-29
+ * @since v0.3.0
*/
public final LinearUnitValue convertToBase(NameSymbol ns) {
final LinearUnit base = LinearUnit.getBase(this.unit).withName(ns);
@@ -95,6 +98,7 @@ public final class UnitValue {
* @return a {@code LinearUnitValue} that is equivalent to this value. It
* will have zero uncertainty.
* @since 2020-09-29
+ * @since v0.3.0
*/
public final LinearUnitValue convertToLinear(LinearUnit newUnit) {
return LinearUnitValue.getExact(newUnit,
@@ -121,6 +125,7 @@ public final class UnitValue {
/**
* @return the unit
* @since 2020-09-29
+ * @since v0.3.0
*/
public final Unit getUnit() {
return this.unit;
@@ -129,6 +134,7 @@ public final class UnitValue {
/**
* @return the value
* @since 2020-09-29
+ * @since v0.3.0
*/
public final double getValue() {
return this.value;
diff --git a/src/main/java/sevenUnits/utils/ConditionalExistenceCollections.java b/src/main/java/sevenUnits/utils/ConditionalExistenceCollections.java
index b46e821..dd21a22 100644
--- a/src/main/java/sevenUnits/utils/ConditionalExistenceCollections.java
+++ b/src/main/java/sevenUnits/utils/ConditionalExistenceCollections.java
@@ -53,6 +53,7 @@ import java.util.function.Predicate;
*
* @author Adrien Hopkins
* @since 2019-10-17
+ * @since v0.3.0
*/
public final class ConditionalExistenceCollections {
/**
@@ -60,6 +61,7 @@ public final class ConditionalExistenceCollections {
*
* @author Adrien Hopkins
* @since 2019-10-17
+ * @since v0.3.0
* @param <E> type of element in collection
*/
static final class ConditionalExistenceCollection<E>
@@ -73,6 +75,7 @@ public final class ConditionalExistenceCollections {
* @param collection
* @param existenceCondition
* @since 2019-10-17
+ * @since v0.3.0
*/
private ConditionalExistenceCollection(final Collection<E> collection,
final Predicate<E> existenceCondition) {
@@ -149,6 +152,7 @@ public final class ConditionalExistenceCollections {
*
* @author Adrien Hopkins
* @since 2019-10-17
+ * @since v0.3.0
* @param <E> type of elements in iterator
*/
static final class ConditionalExistenceIterator<E> implements Iterator<E> {
@@ -163,6 +167,7 @@ public final class ConditionalExistenceCollections {
* @param iterator
* @param condition
* @since 2019-10-17
+ * @since v0.3.0
*/
private ConditionalExistenceIterator(final Iterator<E> iterator,
final Predicate<E> condition) {
@@ -175,6 +180,7 @@ public final class ConditionalExistenceCollections {
* Gets the next element, and sets nextElement and hasNext accordingly.
*
* @since 2019-10-17
+ * @since v0.3.0
*/
private void getAndSetNextElement() {
do {
@@ -214,6 +220,7 @@ public final class ConditionalExistenceCollections {
*
* @author Adrien Hopkins
* @since 2019-10-17
+ * @since v0.3.0
* @param <K> key type
* @param <V> value type
*/
@@ -227,6 +234,7 @@ public final class ConditionalExistenceCollections {
* @param map
* @param entryExistenceCondition
* @since 2019-10-17
+ * @since v0.3.0
*/
private ConditionalExistenceMap(final Map<K, V> map,
final Predicate<Entry<K, V>> entryExistenceCondition) {
@@ -313,6 +321,7 @@ public final class ConditionalExistenceCollections {
*
* @author Adrien Hopkins
* @since 2019-10-17
+ * @since v0.3.0
* @param <E> type of element in set
*/
static final class ConditionalExistenceSet<E> extends AbstractSet<E> {
@@ -325,6 +334,7 @@ public final class ConditionalExistenceCollections {
* @param set set to use
* @param existenceCondition condition where element exists
* @since 2019-10-17
+ * @since v0.3.0
*/
private ConditionalExistenceSet(final Set<E> set,
final Predicate<E> existenceCondition) {
@@ -410,6 +420,7 @@ public final class ConditionalExistenceCollections {
* @param existenceCondition elements only exist if this returns true
* @return wrapper collection
* @since 2019-10-17
+ * @since v0.3.0
*/
public static final <E> Collection<E> conditionalExistenceCollection(
final Collection<E> collection,
@@ -427,6 +438,7 @@ public final class ConditionalExistenceCollections {
* @param existenceCondition elements only exist if this returns true
* @return wrapper iterator
* @since 2019-10-17
+ * @since v0.3.0
*/
public static final <E> Iterator<E> conditionalExistenceIterator(
final Iterator<E> iterator, final Predicate<E> existenceCondition) {
@@ -443,6 +455,7 @@ public final class ConditionalExistenceCollections {
* @param entryExistenceCondition mappings only exist if this returns true
* @return wrapper map
* @since 2019-10-17
+ * @since v0.3.0
*/
public static final <K, V> Map<K, V> conditionalExistenceMap(
final Map<K, V> map,
@@ -459,6 +472,7 @@ public final class ConditionalExistenceCollections {
* @param existenceCondition elements only exist if this returns true
* @return wrapper set
* @since 2019-10-17
+ * @since v0.3.0
*/
public static final <E> Set<E> conditionalExistenceSet(final Set<E> set,
final Predicate<E> existenceCondition) {
diff --git a/src/main/java/sevenUnits/utils/DecimalComparison.java b/src/main/java/sevenUnits/utils/DecimalComparison.java
index 4136818..c7564c4 100644
--- a/src/main/java/sevenUnits/utils/DecimalComparison.java
+++ b/src/main/java/sevenUnits/utils/DecimalComparison.java
@@ -193,6 +193,7 @@ public final class DecimalComparison {
* @param b second value to test
* @return whether they are equal
* @since 2020-09-07
+ * @since v0.3.0
*/
public static final boolean equals(final UncertainDouble a,
final UncertainDouble b) {
diff --git a/src/main/java/sevenUnits/utils/ExpressionParser.java b/src/main/java/sevenUnits/utils/ExpressionParser.java
index 8ab6c95..1c8df9f 100644
--- a/src/main/java/sevenUnits/utils/ExpressionParser.java
+++ b/src/main/java/sevenUnits/utils/ExpressionParser.java
@@ -87,6 +87,7 @@ public final class ExpressionParser<T> {
* A map mapping operator strings to numeric functions.
*
* @since 2024-03-23
+ * @since v0.5.0
*/
private final Map<String, PriorityBiFunction<T, UncertainDouble, T>> numericOperators;
@@ -526,6 +527,7 @@ public final class ExpressionParser<T> {
* A map mapping operator strings to numeric functions.
*
* @since 2024-03-23
+ * @since v0.5.0
*/
private final Map<String, PriorityBiFunction<T, UncertainDouble, T>> numericOperators;
diff --git a/src/main/java/sevenUnits/utils/NameSymbol.java b/src/main/java/sevenUnits/utils/NameSymbol.java
index c0c8f94..ebb1e8b 100644
--- a/src/main/java/sevenUnits/utils/NameSymbol.java
+++ b/src/main/java/sevenUnits/utils/NameSymbol.java
@@ -29,6 +29,7 @@ import java.util.Set;
*
* @author Adrien Hopkins
* @since 2019-10-21
+ * @since v0.3.0
*/
public final class NameSymbol {
/** The {@code NameSymbol} with all fields empty. */
@@ -67,6 +68,7 @@ public final class NameSymbol {
* @param symbol symbol to use
* @return NameSymbol instance
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if name or symbol is null
*/
public static final NameSymbol of(final String name, final String symbol) {
@@ -83,6 +85,7 @@ public final class NameSymbol {
* @param otherNames other names to use
* @return NameSymbol instance
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if any argument is null
*/
public static final NameSymbol of(final String name, final String symbol,
@@ -101,6 +104,7 @@ public final class NameSymbol {
* @param otherNames other names to use
* @return NameSymbol instance
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if any argument is null
*/
public static final NameSymbol of(final String name, final String symbol,
@@ -117,6 +121,7 @@ public final class NameSymbol {
* @param name name to use
* @return NameSymbol instance
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if name is null
*/
public static final NameSymbol ofName(final String name) {
@@ -140,6 +145,7 @@ public final class NameSymbol {
* @param otherNames other names to use
* @return NameSymbol instance
* @since 2019-11-26
+ * @since v0.3.0
*/
public static final NameSymbol ofNullable(final String name,
final String symbol, final Set<String> otherNames) {
@@ -163,6 +169,7 @@ public final class NameSymbol {
* @param otherNames other names to use
* @return NameSymbol instance
* @since 2019-11-26
+ * @since v0.3.0
*/
public static final NameSymbol ofNullable(final String name,
final String symbol, final String... otherNames) {
@@ -176,6 +183,7 @@ public final class NameSymbol {
* @param symbol symbol to use
* @return NameSymbol instance
* @since 2019-10-21
+ * @since v0.3.0
* @throws NullPointerException if symbol is null
*/
public static final NameSymbol ofSymbol(final String symbol) {
@@ -196,6 +204,7 @@ public final class NameSymbol {
* @param otherNames other names and/or spellings, should be a mutable copy
* of the argument
* @since 2019-10-21
+ * @since v0.3.0
*/
NameSymbol(final Optional<String> primaryName,
final Optional<String> symbol, final Set<String> otherNames) {
@@ -241,6 +250,7 @@ public final class NameSymbol {
/**
* @return otherNames
* @since 2019-10-21
+ * @since v0.3.0
*/
public final Set<String> getOtherNames() {
return this.otherNames;
@@ -249,6 +259,7 @@ public final class NameSymbol {
/**
* @return primaryName
* @since 2019-10-21
+ * @since v0.3.0
*/
public final Optional<String> getPrimaryName() {
return this.primaryName;
@@ -257,6 +268,7 @@ public final class NameSymbol {
/**
* @return symbol
* @since 2019-10-21
+ * @since v0.3.0
*/
public final Optional<String> getSymbol() {
return this.symbol;
@@ -302,8 +314,8 @@ public final class NameSymbol {
* @param name additional name to add
* @return copy of this NameSymbol with the additional name
*
- * @since v0.4.0
* @since 2022-04-19
+ * @since v0.4.0
*/
public final NameSymbol withExtraName(String name) {
if (this.primaryName.isPresent()) {
diff --git a/src/main/java/sevenUnits/utils/Nameable.java b/src/main/java/sevenUnits/utils/Nameable.java
index 15026b7..efd1ab8 100644
--- a/src/main/java/sevenUnits/utils/Nameable.java
+++ b/src/main/java/sevenUnits/utils/Nameable.java
@@ -24,12 +24,14 @@ import java.util.Set;
* and symbol data should be immutable.
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public interface Nameable {
/**
* @return a name for the object - if there's a primary name, it's that,
* otherwise the symbol, otherwise "Unnamed"
* @since 2022-02-26
+ * @since v0.4.0
*/
default String getName() {
final NameSymbol ns = this.getNameSymbol();
@@ -40,12 +42,14 @@ public interface Nameable {
* @return a {@code NameSymbol} that contains this object's primary name,
* symbol and other names
* @since 2020-09-07
+ * @since v0.3.0
*/
NameSymbol getNameSymbol();
/**
* @return set of alternate names
* @since 2020-09-07
+ * @since v0.3.0
*/
default Set<String> getOtherNames() {
return this.getNameSymbol().getOtherNames();
@@ -54,6 +58,7 @@ public interface Nameable {
/**
* @return preferred name of object
* @since 2020-09-07
+ * @since v0.3.0
*/
default Optional<String> getPrimaryName() {
return this.getNameSymbol().getPrimaryName();
@@ -63,6 +68,7 @@ public interface Nameable {
* @return a short name for the object - if there's a symbol, it's that,
* otherwise the symbol, otherwise "Unnamed"
* @since 2022-02-26
+ * @since v0.4.0
*/
default String getShortName() {
final NameSymbol ns = this.getNameSymbol();
@@ -72,6 +78,7 @@ public interface Nameable {
/**
* @return short symbol representing object
* @since 2020-09-07
+ * @since v0.3.0
*/
default Optional<String> getSymbol() {
return this.getNameSymbol().getSymbol();
diff --git a/src/main/java/sevenUnits/utils/ObjectProduct.java b/src/main/java/sevenUnits/utils/ObjectProduct.java
index 772ff5e..1b8832e 100644
--- a/src/main/java/sevenUnits/utils/ObjectProduct.java
+++ b/src/main/java/sevenUnits/utils/ObjectProduct.java
@@ -33,6 +33,7 @@ import java.util.function.Function;
* @author Adrien Hopkins
* @param <T> type of object that is being multiplied
* @since 2019-10-16
+ * @since v0.3.0
*/
public class ObjectProduct<T> implements Nameable {
/**
@@ -47,6 +48,7 @@ public class ObjectProduct<T> implements Nameable {
* @param <T> type of objects that can be multiplied
* @return empty product
* @since 2019-10-16
+ * @since v0.3.0
*/
public static final <T> ObjectProduct<T> empty() {
return new ObjectProduct<>(new HashMap<>());
@@ -59,6 +61,7 @@ public class ObjectProduct<T> implements Nameable {
* @param map map mapping objects to exponents
* @return object product
* @since 2019-10-16
+ * @since v0.3.0
*/
public static final <T> ObjectProduct<T> fromExponentMapping(
final Map<T, Integer> map) {
@@ -73,6 +76,7 @@ public class ObjectProduct<T> implements Nameable {
* @param <T> type of object contained in returned ObjectProduct
* @return product
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if object is null
*/
public static final <T> ObjectProduct<T> oneOf(final T object) {
@@ -87,6 +91,7 @@ public class ObjectProduct<T> implements Nameable {
* treats zero as null, and is immutable.
*
* @since 2019-10-16
+ * @since v0.3.0
*/
final Map<T, Integer> exponents;
@@ -100,6 +105,7 @@ public class ObjectProduct<T> implements Nameable {
*
* @param exponents objects that make up this product
* @since 2019-10-16
+ * @since v0.3.0
*/
ObjectProduct(final Map<T, Integer> exponents) {
this(exponents, NameSymbol.EMPTY);
@@ -111,6 +117,7 @@ public class ObjectProduct<T> implements Nameable {
* @param exponents objects that make up this product
* @param nameSymbol name and symbol of object product
* @since 2019-10-16
+ * @since v0.3.0
*/
ObjectProduct(final Map<T, Integer> exponents, NameSymbol nameSymbol) {
this.exponents = Collections.unmodifiableMap(
@@ -125,6 +132,7 @@ public class ObjectProduct<T> implements Nameable {
* @param other other product
* @return quotient of two products
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if other is null
*/
public ObjectProduct<T> dividedBy(final ObjectProduct<T> other) {
@@ -158,6 +166,7 @@ public class ObjectProduct<T> implements Nameable {
/**
* @return immutable map mapping objects to exponents
* @since 2019-10-16
+ * @since v0.3.0
*/
public Map<T, Integer> exponentMap() {
return this.exponents;
@@ -209,6 +218,7 @@ public class ObjectProduct<T> implements Nameable {
* @return true if this product is a single object, i.e. it has one exponent
* of one and no other nonzero exponents
* @since 2019-10-16
+ * @since v0.3.0
*/
public boolean isSingleObject() {
int oneCount = 0;
@@ -229,6 +239,7 @@ public class ObjectProduct<T> implements Nameable {
* @param other other product
* @return product of two products
* @since 2019-10-16
+ * @since v0.3.0
* @throws NullPointerException if other is null
*/
public ObjectProduct<T> times(final ObjectProduct<T> other) {
@@ -254,6 +265,7 @@ public class ObjectProduct<T> implements Nameable {
* @param exponent exponent
* @return result of exponentiation
* @since 2019-10-16
+ * @since v0.3.0
*/
public ObjectProduct<T> toExponent(final int exponent) {
final Map<T, Integer> map = new HashMap<>(this.exponents);
@@ -274,6 +286,7 @@ public class ObjectProduct<T> implements Nameable {
* @return result of exponentiation
*
* @since 2024-08-22
+ * @since v0.3.0
*/
public ObjectProduct<T> toExponentRounded(final double exponent) {
final Map<T, Integer> map = new HashMap<>(this.exponents);
@@ -315,6 +328,7 @@ public class ObjectProduct<T> implements Nameable {
* @param objectToString function to convert objects to strings
* @return string representation of product
* @since 2019-10-16
+ * @since v0.3.0
*/
public String toString(final Function<T, String> objectToString) {
final List<String> positiveStringComponents = new ArrayList<>();
@@ -347,6 +361,7 @@ public class ObjectProduct<T> implements Nameable {
* @return named version of this {@code ObjectProduct}, using data from
* {@code nameSymbol}
* @since 2021-12-15
+ * @since v0.3.0
*/
public ObjectProduct<T> withName(NameSymbol nameSymbol) {
return new ObjectProduct<>(this.exponents, nameSymbol);
diff --git a/src/main/java/sevenUnits/utils/SemanticVersionNumber.java b/src/main/java/sevenUnits/utils/SemanticVersionNumber.java
index bf198ae..cde3d37 100644
--- a/src/main/java/sevenUnits/utils/SemanticVersionNumber.java
+++ b/src/main/java/sevenUnits/utils/SemanticVersionNumber.java
@@ -39,8 +39,8 @@ import java.util.regex.Pattern;
* are made
* </ol>
*
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public final class SemanticVersionNumber
implements Comparable<SemanticVersionNumber> {
@@ -52,8 +52,8 @@ public final class SemanticVersionNumber
* throw NullPointerExceptions, everything else throws
* IllegalArgumentException.
*
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public static final class Builder {
private final int major;
@@ -69,8 +69,8 @@ public final class SemanticVersionNumber
* @param major major version number of final version
* @param minor minor version number of final version
* @param patch patch version number of final version
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
private Builder(int major, int minor, int patch) {
this.major = major;
@@ -82,8 +82,8 @@ public final class SemanticVersionNumber
/**
* @return version number created by this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public SemanticVersionNumber build() {
return new SemanticVersionNumber(this.major, this.minor, this.patch,
@@ -95,8 +95,8 @@ public final class SemanticVersionNumber
*
* @param identifiers build metadata
* @return this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public Builder buildMetadata(List<String> identifiers) {
Objects.requireNonNull(identifiers, "identifiers may not be null");
@@ -115,8 +115,8 @@ public final class SemanticVersionNumber
*
* @param identifiers build metadata
* @return this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public Builder buildMetadata(String... identifiers) {
Objects.requireNonNull(identifiers, "identifiers may not be null");
@@ -154,8 +154,8 @@ public final class SemanticVersionNumber
*
* @param identifiers pre-release identifier(s) to add
* @return this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public Builder preRelease(int... identifiers) {
Objects.requireNonNull(identifiers, "identifiers may not be null");
@@ -173,8 +173,8 @@ public final class SemanticVersionNumber
*
* @param identifiers pre-release identifier(s) to add
* @return this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public Builder preRelease(List<String> identifiers) {
Objects.requireNonNull(identifiers, "identifiers may not be null");
@@ -193,8 +193,8 @@ public final class SemanticVersionNumber
*
* @param identifiers pre-release identifier(s) to add
* @return this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public Builder preRelease(String... identifiers) {
Objects.requireNonNull(identifiers, "identifiers may not be null");
@@ -214,8 +214,8 @@ public final class SemanticVersionNumber
* @param identifier1 first identifier
* @param identifier2 second identifier
* @return this builder
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public Builder preRelease(String identifier1, int identifier2) {
Objects.requireNonNull(identifier1, "identifier1 may not be null");
@@ -280,8 +280,8 @@ public final class SemanticVersionNumber
* @param patch patch version number of final version
* @return version number builder
* @throws IllegalArgumentException if any argument is negative
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public static final SemanticVersionNumber.Builder builder(int major,
int minor, int patch) {
@@ -304,8 +304,8 @@ public final class SemanticVersionNumber
* @param b second list
* @return result of comparison as in a comparator
* @see Comparator
- * @since v0.4.0
* @since 2022-02-20
+ * @since v0.4.0
*/
private static final int compareIdentifiers(List<String> a, List<String> b) {
// test pre-release size
@@ -365,8 +365,8 @@ public final class SemanticVersionNumber
*
* @param versionString string to parse
* @return {@code SemanticVersionNumber} instance
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
* @see #toString
*/
public static final SemanticVersionNumber fromString(String versionString) {
@@ -409,8 +409,8 @@ public final class SemanticVersionNumber
*
* @param versionString string to test
* @return true iff string is valid
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public static final boolean isValidVersionString(String versionString) {
return VERSION_NUMBER.matcher(versionString).matches();
@@ -429,8 +429,8 @@ public final class SemanticVersionNumber
* @throws IllegalArgumentException if any argument is negative or if the
* preReleaseType is null, empty or not
* alphanumeric (0-9, A-Z, a-z, - only)
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public static final SemanticVersionNumber preRelease(int major, int minor,
int patch, String preReleaseType, int preReleaseNumber) {
@@ -467,8 +467,8 @@ public final class SemanticVersionNumber
* @param patch patch version number
* @return {@code SemanticVersionNumber} instance
* @throws IllegalArgumentException if any argument is negative
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public static final SemanticVersionNumber stableVersion(int major, int minor,
int patch) {
@@ -500,8 +500,8 @@ public final class SemanticVersionNumber
* @param patch patch version number
* @param preReleaseIdentifiers pre-release version data
* @param buildMetadata build metadata
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
private SemanticVersionNumber(int major, int minor, int patch,
List<String> preReleaseIdentifiers, List<String> buildMetadata) {
@@ -514,8 +514,8 @@ public final class SemanticVersionNumber
/**
* @return build metadata (empty if there is none)
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public List<String> buildMetadata() {
return Collections.unmodifiableList(this.buildMetadata);
@@ -585,8 +585,8 @@ public final class SemanticVersionNumber
* @param other version to compare with
* @return true if you can definitely upgrade to {@code other} without
* changing code
- * @since v0.4.0
* @since 2022-02-20
+ * @since v0.4.0
*/
public boolean compatibleWith(SemanticVersionNumber other) {
Objects.requireNonNull(other, "other may not be null");
@@ -639,8 +639,8 @@ public final class SemanticVersionNumber
/**
* @return true iff this version is stable (major version > 0 and not a
* pre-release)
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public boolean isStable() {
return this.major > 0 && this.preReleaseIdentifiers.isEmpty();
@@ -649,8 +649,8 @@ public final class SemanticVersionNumber
/**
* @return the MAJOR version number, incremented when you make backwards
* incompatible API changes
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public int majorVersion() {
return this.major;
@@ -659,8 +659,8 @@ public final class SemanticVersionNumber
/**
* @return the MINOR version number, incremented when you add backwards
* compatible functionality
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public int minorVersion() {
return this.minor;
@@ -669,8 +669,8 @@ public final class SemanticVersionNumber
/**
* @return the PATCH version number, incremented when you make backwards
* compatible bug fixes
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public int patchVersion() {
return this.patch;
@@ -679,8 +679,8 @@ public final class SemanticVersionNumber
/**
* @return identifiers describing this pre-release (empty if not a
* pre-release)
- * @since v0.4.0
* @since 2022-02-19
+ * @since v0.4.0
*/
public List<String> preReleaseIdentifiers() {
return Collections.unmodifiableList(this.preReleaseIdentifiers);
diff --git a/src/main/java/sevenUnits/utils/UncertainDouble.java b/src/main/java/sevenUnits/utils/UncertainDouble.java
index 46803d1..f700454 100644
--- a/src/main/java/sevenUnits/utils/UncertainDouble.java
+++ b/src/main/java/sevenUnits/utils/UncertainDouble.java
@@ -29,6 +29,7 @@ import java.util.regex.Pattern;
* arguments is null.
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final class UncertainDouble implements Comparable<UncertainDouble> {
/**
@@ -56,6 +57,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @throws NumberFormatException if the argument is not a number
*
* @since 2022-04-18
+ * @since v0.4.0
*/
public static final UncertainDouble fromRoundedString(String s) {
final BigDecimal value = new BigDecimal(s);
@@ -75,6 +77,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return {@code UncertainDouble} instance
* @throws IllegalArgumentException if the string is invalid
* @since 2020-09-07
+ * @since v0.3.0
*/
public static final UncertainDouble fromString(String s) {
Objects.requireNonNull(s, "s may not be null");
@@ -116,6 +119,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return {@code UncertainDouble} instance with these parameters
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public static final UncertainDouble of(double value, double uncertainty) {
return new UncertainDouble(value, uncertainty);
@@ -132,6 +136,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return {@code UncertainDouble} instance with these parameters
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public static final UncertainDouble ofRelative(double value,
double relativeUncertainty) {
@@ -146,6 +151,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @param value
* @param uncertainty
* @since 2020-09-07
+ * @since v0.3.0
*/
private UncertainDouble(double value, double uncertainty) {
this.value = value;
@@ -178,6 +184,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return quotient
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble dividedBy(UncertainDouble other) {
Objects.requireNonNull(other, "other may not be null");
@@ -192,6 +199,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return quotient
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble dividedByExact(double other) {
return UncertainDouble.of(this.value / other, this.uncertainty / other);
@@ -216,6 +224,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return true iff this and {@code other} are within each other's
* uncertainty range.
* @since 2020-09-07
+ * @since v0.3.0
*/
public final boolean equivalent(UncertainDouble other) {
Objects.requireNonNull(other, "other may not be null");
@@ -227,6 +236,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* Gets the preferred scale for rounding a value for toString.
*
* @since 2020-09-07
+ * @since v0.3.0
*/
private final int getDisplayScale() {
// round based on uncertainty
@@ -263,6 +273,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return true iff the value has no uncertainty
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final boolean isExact() {
return this.uncertainty == 0;
@@ -275,6 +286,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return result of subtraction
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble minus(UncertainDouble other) {
Objects.requireNonNull(other, "other may not be null");
@@ -289,6 +301,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return result of subtraction
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble minusExact(double other) {
return UncertainDouble.of(this.value - other, this.uncertainty);
@@ -301,6 +314,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return result of addition
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble plus(UncertainDouble other) {
Objects.requireNonNull(other, "other may not be null");
@@ -315,6 +329,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return result of addition
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble plusExact(double other) {
return UncertainDouble.of(this.value + other, this.uncertainty);
@@ -323,6 +338,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
/**
* @return relative uncertainty
* @since 2020-09-07
+ * @since v0.3.0
*/
public final double relativeUncertainty() {
return this.uncertainty / this.value;
@@ -335,6 +351,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return product
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble times(UncertainDouble other) {
Objects.requireNonNull(other, "other may not be null");
@@ -349,6 +366,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return product
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble timesExact(double other) {
return UncertainDouble.of(this.value * other, this.uncertainty * other);
@@ -361,6 +379,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return result of exponentation
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble toExponent(UncertainDouble other) {
Objects.requireNonNull(other, "other may not be null");
@@ -381,6 +400,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return result of exponentation
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final UncertainDouble toExponentExact(double other) {
return UncertainDouble.ofRelative(Math.pow(this.value, other),
@@ -404,6 +424,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* </pre>
*
* @since 2020-09-07
+ * @since v0.3.0
*/
@Override
public final String toString() {
@@ -441,6 +462,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
* @return string representation of this {@code UncertainDouble}
*
* @since 2020-09-07
+ * @since v0.3.0
*/
public final String toString(boolean showUncertainty,
RoundingMode roundingMode) {
@@ -473,6 +495,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
/**
* @return absolute uncertainty
* @since 2020-09-07
+ * @since v0.3.0
*/
public final double uncertainty() {
return this.uncertainty;
@@ -481,6 +504,7 @@ public final class UncertainDouble implements Comparable<UncertainDouble> {
/**
* @return value without uncertainty
* @since 2020-09-07
+ * @since v0.3.0
*/
public final double value() {
return this.value;