Add predefined measurement classes

This commit is contained in:
Gregory John Casamento 2019-10-02 05:47:03 -04:00
parent 9f84664b05
commit ea074469c1
2 changed files with 336 additions and 5 deletions

View file

@ -79,6 +79,338 @@ extern "C" {
@end
// Predefined....
@interface NSUnitAcceleration : NSDimension <NSSecureCoding>
/*
Base unit - metersPerSecondSquared
*/
- (NSUnitAcceleration *)metersPerSecondSquared;
- (NSUnitAcceleration *)gravity;
@end
@interface NSUnitAngle : NSDimension <NSSecureCoding>
/*
Base unit - degrees
*/
- (NSUnitAngle *)degrees;
- (NSUnitAngle *)arcMinutes;
- (NSUnitAngle *)arcSeconds;
- (NSUnitAngle *)radians;
- (NSUnitAngle *)gradians;
- (NSUnitAngle *)revolutions;
@end
@interface NSUnitArea : NSDimension <NSSecureCoding>
/*
Base unit - squareMeters
*/
- (NSUnitArea *)squareMegameters;
- (NSUnitArea *)squareKilometers;
- (NSUnitArea *)squareMeters;
- (NSUnitArea *)squareCentimeters;
- (NSUnitArea *)squareMillimeters;
- (NSUnitArea *)squareMicrometers;
- (NSUnitArea *)squareNanometers;
- (NSUnitArea *)squareInches;
- (NSUnitArea *)squareFeet;
- (NSUnitArea *)squareYards;
- (NSUnitArea *)squareMiles;
- (NSUnitArea *)acres;
- (NSUnitArea *)ares;
- (NSUnitArea *)hectares;
@end
@interface NSUnitConcentrationMass : NSDimension <NSSecureCoding>
/*
Base unit - gramsPerLiter
*/
- (NSUnitConcentrationMass *)gramsPerLiter;
- (NSUnitConcentrationMass *)milligramsPerDeciliter;
+ (NSUnitConcentrationMass *)millimolesPerLiterWithGramsPerMole:(double)gramsPerMole;
@end
@interface NSUnitDispersion : NSDimension <NSSecureCoding>
/*
Base unit - partsPerMillion
*/
- (NSUnitDispersion *)partsPerMillion;
@end
@interface NSUnitDuration : NSDimension <NSSecureCoding>
/*
Base unit - seconds
*/
- (NSUnitDuration *)seconds;
- (NSUnitDuration *)minutes;
- (NSUnitDuration *)hours;
@end
@interface NSUnitElectricCharge : NSDimension <NSSecureCoding>
/*
Base unit - coulombs
*/
- (NSUnitElectricCharge *)coulombs;
- (NSUnitElectricCharge *)megaampereHours;
- (NSUnitElectricCharge *)kiloampereHours;
- (NSUnitElectricCharge *)ampereHours;
- (NSUnitElectricCharge *)milliampereHours;
- (NSUnitElectricCharge *)microampereHours;
@end
@interface NSUnitElectricCurrent : NSDimension <NSSecureCoding>
/*
Base unit - amperes
*/
- (NSUnitElectricCurrent *)megaamperes;
- (NSUnitElectricCurrent *)kiloamperes;
- (NSUnitElectricCurrent *)amperes;
- (NSUnitElectricCurrent *)milliamperes;
- (NSUnitElectricCurrent *)microamperes;
@end
@interface NSUnitElectricPotentialDifference : NSDimension <NSSecureCoding>
/*
Base unit - volts
*/
- (NSUnitElectricPotentialDifference *)megavolts;
- (NSUnitElectricPotentialDifference *)kilovolts;
- (NSUnitElectricPotentialDifference *)volts;
- (NSUnitElectricPotentialDifference *)millivolts;
- (NSUnitElectricPotentialDifference *)microvolts;
@end
@interface NSUnitElectricResistance : NSDimension <NSSecureCoding>
/*
Base unit - ohms
*/
- (NSUnitElectricResistance *)megaohms;
- (NSUnitElectricResistance *)kiloohms;
- (NSUnitElectricResistance *)ohms;
- (NSUnitElectricResistance *)milliohms;
- (NSUnitElectricResistance *)microohms;
@end
@interface NSUnitEnergy : NSDimension <NSSecureCoding>
/*
Base unit - joules
*/
- (NSUnitEnergy *)kilojoules;
- (NSUnitEnergy *)joules;
- (NSUnitEnergy *)kilocalories;
- (NSUnitEnergy *)calories;
- (NSUnitEnergy *)kilowattHours;
@end
@interface NSUnitFrequency : NSDimension <NSSecureCoding>
/*
Base unit - hertz
*/
- (NSUnitFrequency *)terahertz;
- (NSUnitFrequency *)gigahertz;
- (NSUnitFrequency *)megahertz;
- (NSUnitFrequency *)kilohertz;
- (NSUnitFrequency *)hertz;
- (NSUnitFrequency *)millihertz;
- (NSUnitFrequency *)microhertz;
- (NSUnitFrequency *)nanohertz;
@end
@interface NSUnitFuelEfficiency : NSDimension <NSSecureCoding>
/*
Base unit - litersPer100Kilometers
*/
- (NSUnitFuelEfficiency *)litersPer100Kilometers;
- (NSUnitFuelEfficiency *)milesPerImperialGallon;
- (NSUnitFuelEfficiency *)milesPerGallon;
@end
@interface NSUnitLength : NSDimension <NSSecureCoding>
/*
Base unit - meters
*/
- (NSUnitLength *)megameters;
- (NSUnitLength *)kilometers;
- (NSUnitLength *)hectometers;
- (NSUnitLength *)decameters;
- (NSUnitLength *)meters;
- (NSUnitLength *)decimeters;
- (NSUnitLength *)centimeters;
- (NSUnitLength *)millimeters;
- (NSUnitLength *)micrometers;
- (NSUnitLength *)nanometers;
- (NSUnitLength *)picometers;
- (NSUnitLength *)inches;
- (NSUnitLength *)feet;
- (NSUnitLength *)yards;
- (NSUnitLength *)miles;
- (NSUnitLength *)scandinavianMiles;
- (NSUnitLength *)lightyears;
- (NSUnitLength *)nauticalMiles;
- (NSUnitLength *)fathoms;
- (NSUnitLength *)furlongs;
- (NSUnitLength *)astronomicalUnits;
- (NSUnitLength *)parsecs;
@end
@interface NSUnitIlluminance : NSDimension <NSSecureCoding>
/*
Base unit - lux
*/
- (NSUnitIlluminance *)lux;
@end
@interface NSUnitMass : NSDimension <NSSecureCoding>
/*
Base unit - kilograms
*/
- (NSUnitMass *)kilograms;
- (NSUnitMass *)grams;
- (NSUnitMass *)decigrams;
- (NSUnitMass *)centigrams;
- (NSUnitMass *)milligrams;
- (NSUnitMass *)micrograms;
- (NSUnitMass *)nanograms;
- (NSUnitMass *)picograms;
- (NSUnitMass *)ounces;
- (NSUnitMass *)poundsMass;
- (NSUnitMass *)stones;
- (NSUnitMass *)metricTons;
- (NSUnitMass *)shortTons;
- (NSUnitMass *)carats;
- (NSUnitMass *)ouncesTroy;
- (NSUnitMass *)slugs;
@end
@interface NSUnitPower : NSDimension <NSSecureCoding>
/*
Base unit - watts
*/
- (NSUnitPower *)terawatts;
- (NSUnitPower *)gigawatts;
- (NSUnitPower *)megawatts;
- (NSUnitPower *)kilowatts;
- (NSUnitPower *)watts;
- (NSUnitPower *)milliwatts;
- (NSUnitPower *)microwatts;
- (NSUnitPower *)nanowatts;
- (NSUnitPower *)picowatts;
- (NSUnitPower *)femtowatts;
- (NSUnitPower *)horsepower;
@end
@interface NSUnitPressure : NSDimension <NSSecureCoding>
/*
Base unit - newtonsPerMetersSquared (equivalent to 1 pascal)
*/
- (NSUnitPressure *)newtonsPerMetersSquared;
- (NSUnitPressure *)gigapascals;
- (NSUnitPressure *)megapascals;
- (NSUnitPressure *)kilopascals;
- (NSUnitPressure *)hectopascals;
- (NSUnitPressure *)inchesOfMercury;
- (NSUnitPressure *)bars;
- (NSUnitPressure *)millibars;
- (NSUnitPressure *)millimetersOfMercury;
- (NSUnitPressure *)poundsForcePerSquareInch;
@end
@interface NSUnitSpeed : NSDimension <NSSecureCoding>
/*
Base unit - metersPerSecond
*/
- (NSUnitSpeed *)metersPerSecond;
- (NSUnitSpeed *)kilometersPerHour;
- (NSUnitSpeed *)milesPerHour;
- (NSUnitSpeed *)knots;
@end
@interface NSUnitTemperature : NSDimension <NSSecureCoding>
/*
Base unit - kelvin
*/
- (NSUnitTemperature *)kelvin;
- (NSUnitTemperature *)celsius;
- (NSUnitTemperature *)fahrenheit;
@end
@interface NSUnitVolume : NSDimension <NSSecureCoding>
/*
Base unit - liters
*/
- (NSUnitVolume *)megaliters;
- (NSUnitVolume *)kiloliters;
- (NSUnitVolume *)liters;
- (NSUnitVolume *)deciliters;
- (NSUnitVolume *)centiliters;
- (NSUnitVolume *)milliliters;
- (NSUnitVolume *)cubicKilometers;
- (NSUnitVolume *)cubicMeters;
- (NSUnitVolume *)cubicDecimeters;
- (NSUnitVolume *)cubicCentimeters;
- (NSUnitVolume *)cubicMillimeters;
- (NSUnitVolume *)cubicInches;
- (NSUnitVolume *)cubicFeet;
- (NSUnitVolume *)cubicYards;
- (NSUnitVolume *)cubicMiles;
- (NSUnitVolume *)acreFeet;
- (NSUnitVolume *)bushels;
- (NSUnitVolume *)teaspoons;
- (NSUnitVolume *)tablespoons;
- (NSUnitVolume *)fluidOunces;
- (NSUnitVolume *)cups;
- (NSUnitVolume *)pints;
- (NSUnitVolume *)quarts;
- (NSUnitVolume *)gallons;
- (NSUnitVolume *)imperialTeaspoons;
- (NSUnitVolume *)imperialTablespoons;
- (NSUnitVolume *)imperialFluidOunces;
- (NSUnitVolume *)imperialPints;
- (NSUnitVolume *)imperialQuarts;
- (NSUnitVolume *)imperialGallons;
- (NSUnitVolume *)metricCups;
@end
#if defined(__cplusplus)
}

View file

@ -24,7 +24,9 @@
#include <Foundation/NSUnit.h>
#include <Foundation/NSArchiver.h>
#include <Foundation/NSKeyedArchiver.h>
// Abstract conversion...
@implementation NSUnitConverter
- (double)baseUnitValueFromValue:(double)value
{
@ -37,9 +39,8 @@
}
@end
// Linear conversion...
@implementation NSUnitConverterLinear
- (instancetype) initWithCoefficient: (double)coefficient
{
self = [super init];
@ -103,7 +104,7 @@
}
@end
// Abstract unit...
@implementation NSUnit
+ (instancetype)new
{
@ -170,7 +171,6 @@
// Dimension using units....
@implementation NSDimension
- (NSUnitConverter *) converter
{
return _converter;
@ -185,6 +185,5 @@
{
return nil;
}
@end