mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-03 13:21:00 +00:00
420 lines
9.4 KiB
Objective-C
420 lines
9.4 KiB
Objective-C
/* Definition of class NSUnit
|
|
Copyright (C) 2019 Free Software Foundation, Inc.
|
|
|
|
By: Gregory John Casamento <greg.casamento@gmail.com>
|
|
Date: Mon Sep 30 15:58:21 EDT 2019
|
|
|
|
This file is part of the GNUstep Library.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free
|
|
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110 USA.
|
|
*/
|
|
|
|
#ifndef _NSUnit_h_GNUSTEP_BASE_INCLUDE
|
|
#define _NSUnit_h_GNUSTEP_BASE_INCLUDE
|
|
|
|
#import <Foundation/NSObject.h>
|
|
|
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_12, GS_API_LATEST)
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Unit converter
|
|
@interface NSUnitConverter : NSObject
|
|
- (double) baseUnitValueFromValue: (double)value;
|
|
- (double) valueFromBaseUnitValue: (double)baseUnitValue;
|
|
@end
|
|
|
|
// Linea converter... for things like C <-> F conversion...
|
|
@interface NSUnitConverterLinear : NSUnitConverter <NSCoding>
|
|
{
|
|
double _coefficient;
|
|
double _constant;
|
|
}
|
|
- (instancetype) initWithCoefficient: (double)coefficient;
|
|
- (instancetype) initWithCoefficient: (double)coefficient
|
|
constant: (double)constant;
|
|
- (double) coefficient;
|
|
- (double) constant;
|
|
@end
|
|
|
|
// Units... abstract...
|
|
@interface NSUnit : NSObject <NSCopying, NSCoding>
|
|
{
|
|
NSString *_symbol;
|
|
}
|
|
|
|
- (instancetype) init;
|
|
- (instancetype) initWithSymbol: (NSString *)symbol;
|
|
- (NSString *) symbol;
|
|
|
|
@end
|
|
|
|
// Dimension using units....
|
|
@interface NSDimension : NSUnit <NSCoding>
|
|
{
|
|
double _value;
|
|
NSUnitConverter *_converter;
|
|
}
|
|
|
|
- (NSUnitConverter *) converter;
|
|
- (instancetype) initWithSymbol: (NSString *)symbol converter: (NSUnitConverter *)converter;
|
|
+ (instancetype) baseUnit;
|
|
|
|
@end
|
|
|
|
// Predefined....
|
|
@interface NSUnitAcceleration : NSDimension
|
|
/*
|
|
Base unit - metersPerSecondSquared
|
|
*/
|
|
|
|
+ (NSUnitAcceleration *) metersPerSecondSquared;
|
|
+ (NSUnitAcceleration *) gravity;
|
|
|
|
@end
|
|
|
|
@interface NSUnitAngle : NSDimension
|
|
/*
|
|
Base unit - degrees
|
|
*/
|
|
|
|
+ (NSUnitAngle *) degrees;
|
|
+ (NSUnitAngle *) arcMinutes;
|
|
+ (NSUnitAngle *) arcSeconds;
|
|
+ (NSUnitAngle *) radians;
|
|
+ (NSUnitAngle *) gradians;
|
|
+ (NSUnitAngle *) revolutions;
|
|
|
|
@end
|
|
|
|
@interface NSUnitArea : NSDimension
|
|
/*
|
|
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
|
|
/*
|
|
Base unit - gramsPerLiter
|
|
*/
|
|
|
|
+ (NSUnitConcentrationMass *) gramsPerLiter;
|
|
+ (NSUnitConcentrationMass *) milligramsPerDeciliter;
|
|
|
|
+ (NSUnitConcentrationMass *) millimolesPerLiterWithGramsPerMole: (double)gramsPerMole;
|
|
|
|
@end
|
|
|
|
@interface NSUnitDispersion : NSDimension
|
|
/*
|
|
Base unit - partsPerMillion
|
|
*/
|
|
+ (NSUnitDispersion *) partsPerMillion;
|
|
|
|
@end
|
|
|
|
@interface NSUnitDuration : NSDimension
|
|
/*
|
|
Base unit - seconds
|
|
*/
|
|
|
|
+ (NSUnitDuration *) seconds;
|
|
+ (NSUnitDuration *) minutes;
|
|
+ (NSUnitDuration *) hours;
|
|
|
|
@end
|
|
|
|
@interface NSUnitElectricCharge : NSDimension
|
|
/*
|
|
Base unit - coulombs
|
|
*/
|
|
|
|
+ (NSUnitElectricCharge *) coulombs;
|
|
+ (NSUnitElectricCharge *) megaampereHours;
|
|
+ (NSUnitElectricCharge *) kiloampereHours;
|
|
+ (NSUnitElectricCharge *) ampereHours;
|
|
+ (NSUnitElectricCharge *) milliampereHours;
|
|
+ (NSUnitElectricCharge *) microampereHours;
|
|
|
|
@end
|
|
|
|
@interface NSUnitElectricCurrent : NSDimension
|
|
/*
|
|
Base unit - amperes
|
|
*/
|
|
|
|
+ (NSUnitElectricCurrent *) megaamperes;
|
|
+ (NSUnitElectricCurrent *) kiloamperes;
|
|
+ (NSUnitElectricCurrent *) amperes;
|
|
+ (NSUnitElectricCurrent *) milliamperes;
|
|
+ (NSUnitElectricCurrent *) microamperes;
|
|
|
|
@end
|
|
|
|
@interface NSUnitElectricPotentialDifference : NSDimension
|
|
/*
|
|
Base unit - volts
|
|
*/
|
|
|
|
+ (NSUnitElectricPotentialDifference *) megavolts;
|
|
+ (NSUnitElectricPotentialDifference *) kilovolts;
|
|
+ (NSUnitElectricPotentialDifference *) volts;
|
|
+ (NSUnitElectricPotentialDifference *) millivolts;
|
|
+ (NSUnitElectricPotentialDifference *) microvolts;
|
|
|
|
@end
|
|
|
|
@interface NSUnitElectricResistance : NSDimension
|
|
/*
|
|
Base unit - ohms
|
|
*/
|
|
|
|
+ (NSUnitElectricResistance *) megaohms;
|
|
+ (NSUnitElectricResistance *) kiloohms;
|
|
+ (NSUnitElectricResistance *) ohms;
|
|
+ (NSUnitElectricResistance *) milliohms;
|
|
+ (NSUnitElectricResistance *) microohms;
|
|
|
|
@end
|
|
|
|
@interface NSUnitEnergy : NSDimension
|
|
/*
|
|
Base unit - joules
|
|
*/
|
|
|
|
+ (NSUnitEnergy *) kilojoules;
|
|
+ (NSUnitEnergy *) joules;
|
|
+ (NSUnitEnergy *) kilocalories;
|
|
+ (NSUnitEnergy *) calories;
|
|
+ (NSUnitEnergy *) kilowattHours;
|
|
|
|
@end
|
|
|
|
@interface NSUnitFrequency : NSDimension
|
|
/*
|
|
Base unit - hertz
|
|
*/
|
|
|
|
+ (NSUnitFrequency *) terahertz;
|
|
+ (NSUnitFrequency *) gigahertz;
|
|
+ (NSUnitFrequency *) megahertz;
|
|
+ (NSUnitFrequency *) kilohertz;
|
|
+ (NSUnitFrequency *) hertz;
|
|
+ (NSUnitFrequency *) millihertz;
|
|
+ (NSUnitFrequency *) microhertz;
|
|
+ (NSUnitFrequency *) nanohertz;
|
|
|
|
@end
|
|
|
|
@interface NSUnitFuelEfficiency : NSDimension
|
|
/*
|
|
Base unit - litersPer100Kilometers
|
|
*/
|
|
|
|
+ (NSUnitFuelEfficiency *) litersPer100Kilometers;
|
|
+ (NSUnitFuelEfficiency *) milesPerImperialGallon;
|
|
+ (NSUnitFuelEfficiency *) milesPerGallon;
|
|
|
|
@end
|
|
|
|
@interface NSUnitLength : NSDimension
|
|
/*
|
|
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
|
|
/*
|
|
Base unit - lux
|
|
*/
|
|
|
|
+ (NSUnitIlluminance *) lux;
|
|
|
|
@end
|
|
|
|
@interface NSUnitMass : NSDimension
|
|
/*
|
|
Base unit - kilograms
|
|
*/
|
|
|
|
+ (NSUnitMass *) kilograms;
|
|
+ (NSUnitMass *) grams;
|
|
+ (NSUnitMass *) decigrams;
|
|
+ (NSUnitMass *) centigrams;
|
|
+ (NSUnitMass *) milligrams;
|
|
+ (NSUnitMass *) micrograms;
|
|
+ (NSUnitMass *) nanograms;
|
|
+ (NSUnitMass *) picograms;
|
|
+ (NSUnitMass *) ounces;
|
|
+ (NSUnitMass *) pounds;
|
|
+ (NSUnitMass *) stones;
|
|
+ (NSUnitMass *) metricTons;
|
|
+ (NSUnitMass *) shortTons;
|
|
+ (NSUnitMass *) carats;
|
|
+ (NSUnitMass *) ouncesTroy;
|
|
+ (NSUnitMass *) slugs;
|
|
|
|
@end
|
|
|
|
@interface NSUnitPower : NSDimension
|
|
/*
|
|
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
|
|
/*
|
|
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
|
|
/*
|
|
Base unit - metersPerSecond
|
|
*/
|
|
|
|
+ (NSUnitSpeed *) metersPerSecond;
|
|
+ (NSUnitSpeed *) kilometersPerHour;
|
|
+ (NSUnitSpeed *) milesPerHour;
|
|
+ (NSUnitSpeed *) knots;
|
|
|
|
@end
|
|
|
|
@interface NSUnitTemperature : NSDimension
|
|
/*
|
|
Base unit - kelvin
|
|
*/
|
|
+ (NSUnitTemperature *) kelvin;
|
|
+ (NSUnitTemperature *) celsius;
|
|
+ (NSUnitTemperature *) fahrenheit;
|
|
|
|
|
|
@end
|
|
|
|
@interface NSUnitVolume : NSDimension
|
|
/*
|
|
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)
|
|
}
|
|
#endif
|
|
|
|
#endif /* GS_API_MACOSX */
|
|
|
|
#endif /* _NSUnit_h_GNUSTEP_BASE_INCLUDE */
|
|
|