SIDimensionality
Interface for representing and manipulating SI physical dimensionalities.
The SIDimensionality API provides an immutable interface for physical dimensionalities, supporting all seven SI base dimensions: length, mass, time, electric current, temperature, amount of substance, and luminous intensity. Dimensionalities may be combined, reduced, raised to powers, parsed from strings, and tested for equality or compatibility.
Defines
-
kSIQuantityDimensionless
-
kSIQuantityLength
-
kSIQuantityInverseLength
-
kSIQuantityWavenumber
-
kSIQuantityLengthRatio
-
kSIQuantityPlaneAngle
-
kSIQuantityMass
-
kSIQuantityInverseMass
-
kSIQuantityMassRatio
-
kSIQuantityTime
-
kSIQuantityInverseTime
-
kSIQuantityFrequency
-
kSIQuantityRadioactivity
-
kSIQuantityTimeRatio
-
kSIQuantityFrequencyRatio
-
kSIQuantityInverseTimeSquared
-
kSIQuantityCurrent
-
kSIQuantityInverseCurrent
-
kSIQuantityCurrentRatio
-
kSIQuantityTemperature
-
kSIQuantityInverseTemperature
-
kSIQuantityTemperatureRatio
-
kSIQuantityTemperatureGradient
-
kSIQuantityAmount
-
kSIQuantityInverseAmount
-
kSIQuantityAmountRatio
-
kSIQuantityLuminousIntensity
-
kSIQuantityInverseLuminousIntensity
-
kSIQuantityLuminousIntensityRatio
-
kSIQuantityArea
-
kSIQuantityInverseArea
-
kSIQuantityAreaRatio
-
kSIQuantitySolidAngle
-
kSIQuantityVolume
-
kSIQuantityInverseVolume
-
kSIQuantityVolumeRatio
-
kSIQuantitySpeed
-
kSIQuantityVelocity
-
kSIQuantityLinearMomentum
-
kSIQuantityAngularMomentum
-
kSIQuantityMomentOfInertia
-
kSIQuantityAcceleration
-
kSIQuantityMassFlowRate
-
kSIQuantityMassFlux
-
kSIQuantityDensity
-
kSIQuantitySpecificGravity
-
kSIQuantitySpecificSurfaceArea
-
kSIQuantitySurfaceAreaToVolumeRatio
-
kSIQuantitySurfaceDensity
-
kSIQuantitySpecificVolume
-
kSIQuantityCurrentDensity
-
kSIQuantityMagneticFieldStrength
-
kSIQuantityLuminance
-
kSIQuantityRefractiveIndex
-
kSIQuantityFluidity
-
kSIQuantityMomentOfForce
-
kSIQuantitySurfaceTension
-
kSIQuantitySurfaceEnergy
-
kSIQuantityAngularSpeed
-
kSIQuantityAngularVelocity
-
kSIQuantityAngularAcceleration
-
kSIQuantityHeatFluxDensity
-
kSIQuantityIrradiance
-
kSIQuantitySpectralRadiantFluxDensity
-
kSIQuantityHeatCapacity
-
kSIQuantityEntropy
-
kSIQuantitySpecificHeatCapacity
-
kSIQuantitySpecificEntropy
-
kSIQuantitySpecificEnergy
-
kSIQuantityThermalConductance
-
kSIQuantityThermalConductivity
-
kSIQuantityEnergyDensity
-
kSIQuantityElectricFieldStrength
-
kSIQuantityElectricFieldGradient
-
kSIQuantityElectricChargeDensity
-
kSIQuantitySurfaceChargeDensity
-
kSIQuantityElectricFlux
-
kSIQuantityElectricFluxDensity
-
kSIQuantityElectricDisplacement
-
kSIQuantityPermittivity
-
kSIQuantityPermeability
-
kSIQuantityMolarEnergy
-
kSIQuantityMolarEntropy
-
kSIQuantityMolarHeatCapacity
-
kSIQuantityMolarMass
-
kSIQuantityMolality
-
kSIQuantityDiffusionFlux
-
kSIQuantityMassToChargeRatio
-
kSIQuantityChargeToMassRatio
-
kSIQuantityRadiationExposure
-
kSIQuantityAbsorbedDoseRate
-
kSIQuantityRadiantIntensity
-
kSIQuantitySpectralRadiantIntensity
-
kSIQuantityRadiance
-
kSIQuantitySpectralRadiance
-
kSIQuantityPorosity
-
kSIQuantityAngularFrequency
-
kSIQuantityForce
-
kSIQuantityTorque
-
kSIQuantityPressure
-
kSIQuantityStress
-
kSIQuantityElasticModulus
-
kSIQuantityCompressibility
-
kSIQuantityStressOpticCoefficient
-
kSIQuantityPressureGradient
-
kSIQuantityEnergy
-
kSIQuantitySpectralRadiantEnergy
-
kSIQuantityPower
-
kSIQuantitySpectralPower
-
kSIQuantityVolumePowerDensity
-
kSIQuantitySpecificPower
-
kSIQuantityRadiantFlux
-
kSIQuantityElectricCharge
-
kSIQuantityAmountOfElectricity
-
kSIQuantityElectricPotentialDifference
-
kSIQuantityElectromotiveForce
-
kSIQuantityElectricPolarizability
-
kSIQuantityElectricDipoleMoment
-
kSIQuantityVoltage
-
kSIQuantityCapacitance
-
kSIQuantityElectricResistance
-
kSIQuantityElectricResistancePerLength
-
kSIQuantityElectricResistivity
-
kSIQuantityElectricConductance
-
kSIQuantityElectricConductivity
-
kSIQuantityElectricalMobility
-
kSIQuantityMolarConductivity
-
kSIQuantityMagneticDipoleMoment
-
kSIQuantityMagneticDipoleMomentRatio
-
kSIQuantityMagneticFlux
-
kSIQuantityMagneticFluxDensity
-
kSIQuantityMolarMagneticSusceptibility
-
kSIQuantityInverseMagneticFluxDensity
-
kSIQuantityMagneticFieldGradient
-
kSIQuantityInductance
-
kSIQuantityLuminousFlux
-
kSIQuantityLuminousFluxDensity
-
kSIQuantityLuminousEnergy
-
kSIQuantityIlluminance
-
kSIQuantityAbsorbedDose
-
kSIQuantityDoseEquivalent
-
kSIQuantityCatalyticActivity
-
kSIQuantityCatalyticActivityConcentration
-
kSIQuantityCatalyticActivityContent
-
kSIQuantityAction
-
kSIQuantityReducedAction
-
kSIQuantityKinematicViscosity
-
kSIQuantityDiffusionCoefficient
-
kSIQuantityCirculation
-
kSIQuantityDynamicViscosity
-
kSIQuantityAmountConcentration
-
kSIQuantityMassConcentration
-
kSIQuantityChargePerAmount
-
kSIQuantityGravitationalConstant
-
kSIQuantityLengthPerVolume
-
kSIQuantityVolumePerLength
-
kSIQuantityVolumetricFlowRate
-
kSIQuantityFrequencyPerMagneticFluxDensity
-
kSIQuantityPowerPerLuminousFlux
-
kSIQuantityLuminousEfficacy
-
kSIQuantityRockPermeability
-
kSIQuantityGyromagneticRatio
-
kSIQuantityHeatTransferCoefficient
-
kSIQuantityGasPermeance
-
kSIQuantityPowerPerAreaPerTemperatureToFourthPower
-
kSIQuantityFirstHyperPolarizability
-
kSIQuantitySecondHyperPolarizability
-
kSIQuantityElectricQuadrupoleMoment
-
kSIQuantityMagnetizability
-
kSIQuantitySecondRadiationConstant
-
kSIQuantityWavelengthDisplacementConstant
-
kSIQuantityFineStructureConstant
-
kSIQuantityRatePerAmountConcentrationPerTime
Functions
-
SIDimensionalityRef SIDimensionalityFromExpression(OCStringRef expression, OCStringRef *error)
Parse an SI dimensionality expression into a cached, immutable object.
-
OCTypeID SIDimensionalityGetTypeID(void)
Returns the unique type identifier for SIDimensionality objects.
-
OCStringRef SIDimensionalityCopySymbol(SIDimensionalityRef theDim)
Gets the canonical symbol representation of a dimensionality.
-
uint8_t SIDimensionalityGetNumExpAtIndex(SIDimensionalityRef theDim, SIBaseDimensionIndex index)
Gets the numerator of the rational exponent for a base dimension.
-
uint8_t SIDimensionalityGetDenExpAtIndex(SIDimensionalityRef theDim, SIBaseDimensionIndex index)
Gets the denominator of the rational exponent for a base dimension.
-
int8_t SIDimensionalityReducedExponentAtIndex(SIDimensionalityRef theDim, SIBaseDimensionIndex index)
Gets the reduced exponent (num - den) for a base dimension.
-
cJSON *SIDimensionalityCopyAsJSON(SIDimensionalityRef dim, bool typed, OCStringRef *outError)
Create a JSON representation of an SIDimensionality.
Creates either a typed or untyped JSON representation based on the typed parameter.
Typed: {“type”: “SIDimensionality”, “value”: “m/s^2”}
Untyped: “m/s^2”
- Parameters:
dim – An SIDimensionalityRef instance.
typed – If true, creates a typed JSON object. If false, creates a plain string.
outError – Optional pointer to receive error information if serialization fails.
- Returns:
A cJSON object or string, or cJSON null on failure.
-
SIDimensionalityRef SIDimensionalityFromJSON(cJSON *json, OCStringRef *outError)
Create an SIDimensionality object from a JSON representation.
Accepts both typed and untyped JSON formats:
Typed: {“type”: “SIDimensionality”, “value”: “m/s^2”}
Untyped: “m/s^2”
- Parameters:
json – A cJSON object or string representing the dimensionality.
- Returns:
An SIDimensionalityRef or NULL on failure.
-
bool SIDimensionalityEqual(SIDimensionalityRef theDim1, SIDimensionalityRef theDim2)
Returns true if two dimensionalities are strictly equal.
-
bool SIDimensionalityIsDimensionless(SIDimensionalityRef theDim)
Returns true if dimensionality is physically dimensionless.
-
bool SIDimensionalityIsDerived(SIDimensionalityRef theDim)
Returns true if dimensionality is derived.
-
bool SIDimensionalityIsDimensionlessAndNotDerived(SIDimensionalityRef theDim)
Returns true if dimensionless and not derived by cancellation.
-
bool SIDimensionalityIsDimensionlessAndDerived(SIDimensionalityRef theDim)
Returns true if dimensionless by cancellation of base symbols.
-
bool SIDimensionalityIsBaseDimensionality(SIDimensionalityRef theDim)
Returns true if dimensionality matches exactly one SI base dimension.
-
bool SIDimensionalityHasSameReducedDimensionality(SIDimensionalityRef theDim1, SIDimensionalityRef theDim2)
Returns true if two dimensionalities have the same reduced exponents.
-
bool SIDimensionalityHasReducedExponents(SIDimensionalityRef theDim, int8_t length_exponent, int8_t mass_exponent, int8_t time_exponent, int8_t current_exponent, int8_t temperature_exponent, int8_t amount_exponent, int8_t luminous_intensity_exponent)
Returns true if dimensionality has the specified reduced exponents.
-
bool SIDimensionalityCanBeReduced(SIDimensionalityRef theDim)
Returns true if dimensionality can be reduced by canceling common factors.
-
SIDimensionalityRef SIDimensionalityDimensionless(void)
Returns the canonical dimensionless dimensionality.
-
SIDimensionalityRef SIDimensionalityForBaseDimensionIndex(SIBaseDimensionIndex index)
Returns the dimensionality for a given base dimension index.
-
SIDimensionalityRef SIDimensionalityWithBaseDimensionSymbol(OCStringRef symbol, OCStringRef *error)
Returns the dimensionality for a single-character base symbol.
-
SIDimensionalityRef SIDimensionalityForQuantity(OCStringRef quantity, OCStringRef *error)
Maps a quantity name to its dimensionality.
-
SIDimensionalityRef SIDimensionalityByReducing(SIDimensionalityRef theDimensionality)
Returns a dimensionality with all exponents reduced to lowest terms.
-
SIDimensionalityRef SIDimensionalityByTakingNthRoot(SIDimensionalityRef theDim, uint8_t root, OCStringRef *error)
Returns the nth-root of a dimensionality, or NULL and error if invalid.
-
SIDimensionalityRef SIDimensionalityByMultiplying(SIDimensionalityRef theDim1, SIDimensionalityRef theDim2)
Multiplies two dimensionalities and reduces to lowest terms.
-
SIDimensionalityRef SIDimensionalityByMultiplyingWithoutReducing(SIDimensionalityRef theDim1, SIDimensionalityRef theDim2)
Multiplies two dimensionalities without reducing exponents.
-
SIDimensionalityRef SIDimensionalityByDividing(SIDimensionalityRef theDim1, SIDimensionalityRef theDim2)
Divides one dimensionality by another, reduces result.
-
SIDimensionalityRef SIDimensionalityByDividingWithoutReducing(SIDimensionalityRef theDim1, SIDimensionalityRef theDim2)
Divides one dimensionality by another, does not reduce exponents.
-
SIDimensionalityRef SIDimensionalityByRaisingToPower(SIDimensionalityRef theDim, int power)
Create a new dimensionality by raising to a power and reducing exponents to lowest terms.
-
SIDimensionalityRef SIDimensionalityByRaisingToPowerWithoutReducing(SIDimensionalityRef theDim, int power)
Create a new dimensionality by raising to a power without reducing exponents.
-
OCArrayRef SIDimensionalityCreateArrayOfQuantities(SIDimensionalityRef theDim)
Returns all quantity names matching this dimensionality exactly.
-
OCArrayRef SIDimensionalityCreateArrayOfQuantitiesWithSameReducedDimensionality(SIDimensionalityRef theDim)
Returns all quantity names with the same reduced dimensionality.
-
OCArrayRef SIDimensionalityCreateArrayWithSameReducedDimensionality(SIDimensionalityRef theDim)
Returns all built-in dimensionalities with the same reduced dimensionality.
-
OCArrayRef SIDimensionalityCreateArrayOfQuantityNames(SIDimensionalityRef dim)
Returns an array of quantity names mapped to the given dimensionality.
-
OCArrayRef SIDimensionalityCreateArrayOfQuantityNamesWithSameReducedDimensionality(SIDimensionalityRef dim)
Returns all quantity names associated with dimensionalities that reduce to the same form as the input.
-
OCArrayRef SIDimensionalityCreateArrayOfAllQuantityNames(void)
Returns an array of all available quantity names in the library.
-
void SIDimensionalityShow(SIDimensionalityRef theDim)
Prints a concise representation of the dimensionality to stdout.
-
void SIDimensionalityShowFull(SIDimensionalityRef theDim)
Prints a detailed, annotated report of the dimensionality to stdout.