KiCad PCB EDA Suite
Loading...
Searching...
No Matches
text_eval_units::UnitRegistry Class Reference

Unit registry that provides centralized unit string mapping and conversion. More...

#include <text_eval_units.h>

Classes

struct  UnitInfo
 Unit information structure. More...
 

Static Public Member Functions

static constexpr Unit parseUnit (std::string_view unitStr) noexcept
 Parse a unit string and return the corresponding Unit enum.
 
static constexpr std::string_view getUnitString (Unit unit) noexcept
 Get the unit string for a given Unit enum.
 
static std::vector< std::string > getAllUnitStrings ()
 Get all unit strings in parsing order (longest first)
 
static constexpr double getConversionFactor (Unit fromUnit, Unit toUnit) noexcept
 Get conversion factor from one unit to another.
 
static constexpr Unit fromEdaUnits (EDA_UNITS edaUnits) noexcept
 Convert EDA_UNITS to text evaluator Unit enum.
 
static constexpr double convertValue (double value, Unit fromUnit, Unit toUnit) noexcept
 Convert a value with units to target units.
 
static double convertToEdaUnits (double value, std::string_view unitStr, EDA_UNITS targetUnits)
 Convert a value with unit string to target EDA_UNITS.
 
static constexpr bool isValidUnit (std::string_view unitStr) noexcept
 Check if a string is a valid unit.
 
static std::optional< UnitInfogetUnitInfo (Unit unit) noexcept
 Get unit information for debugging/display purposes.
 

Static Private Attributes

static constexpr std::array< UnitInfo, 15 > s_unitTable
 

Detailed Description

Unit registry that provides centralized unit string mapping and conversion.

This class uses magic_enum to provide compile-time unit string mapping and runtime unit parsing/conversion capabilities. All unit-related operations in the text evaluator should use this registry to ensure consistency.

Definition at line 74 of file text_eval_units.h.

Member Function Documentation

◆ convertToEdaUnits()

static double text_eval_units::UnitRegistry::convertToEdaUnits ( double value,
std::string_view unitStr,
EDA_UNITS targetUnits )
inlinestatic

Convert a value with unit string to target EDA_UNITS.

Parameters
valueThe value to convert
unitStrSource unit string
targetUnitsTarget EDA_UNITS
Returns
Converted value

Definition at line 233 of file text_eval_units.h.

References convertValue(), fromEdaUnits(), text_eval_units::INVALID, and parseUnit().

Referenced by KIEVAL_UNIT_CONV::convertToDefaultUnits().

◆ convertValue()

static constexpr double text_eval_units::UnitRegistry::convertValue ( double value,
Unit fromUnit,
Unit toUnit )
inlinestaticconstexprnoexcept

Convert a value with units to target units.

Parameters
valueThe value to convert
fromUnitSource unit
toUnitTarget unit
Returns
Converted value

Definition at line 222 of file text_eval_units.h.

References getConversionFactor().

Referenced by convertToEdaUnits().

◆ fromEdaUnits()

static constexpr Unit text_eval_units::UnitRegistry::fromEdaUnits ( EDA_UNITS edaUnits)
inlinestaticconstexprnoexcept

◆ getAllUnitStrings()

static std::vector< std::string > text_eval_units::UnitRegistry::getAllUnitStrings ( )
inlinestatic

Get all unit strings in parsing order (longest first)

Returns
Vector of all supported unit strings

Definition at line 154 of file text_eval_units.h.

References info, text_eval_units::INVALID, and s_unitTable.

Referenced by EXPRESSION_EVALUATOR::expandVariablesOutsideExpressions().

◆ getConversionFactor()

static constexpr double text_eval_units::UnitRegistry::getConversionFactor ( Unit fromUnit,
Unit toUnit )
inlinestaticconstexprnoexcept

Get conversion factor from one unit to another.

Parameters
fromUnitSource unit
toUnitTarget unit
Returns
Conversion factor, or 1.0 if conversion not supported

Definition at line 173 of file text_eval_units.h.

References info, and s_unitTable.

Referenced by convertValue().

◆ getUnitInfo()

static std::optional< UnitInfo > text_eval_units::UnitRegistry::getUnitInfo ( Unit unit)
inlinestaticnoexcept

Get unit information for debugging/display purposes.

Parameters
unitThe unit to get information for
Returns
Optional UnitInfo structure, nullopt if unit is invalid

Definition at line 257 of file text_eval_units.h.

References info, and s_unitTable.

◆ getUnitString()

static constexpr std::string_view text_eval_units::UnitRegistry::getUnitString ( Unit unit)
inlinestaticconstexprnoexcept

Get the unit string for a given Unit enum.

Parameters
unitThe Unit enum value
Returns
The unit string, or empty string if invalid

Definition at line 141 of file text_eval_units.h.

References info, and s_unitTable.

◆ isValidUnit()

static constexpr bool text_eval_units::UnitRegistry::isValidUnit ( std::string_view unitStr)
inlinestaticconstexprnoexcept

Check if a string is a valid unit.

Parameters
unitStrThe string to check
Returns
True if the string represents a valid unit

Definition at line 248 of file text_eval_units.h.

References text_eval_units::INVALID, and parseUnit().

◆ parseUnit()

static constexpr Unit text_eval_units::UnitRegistry::parseUnit ( std::string_view unitStr)
inlinestaticconstexprnoexcept

Parse a unit string and return the corresponding Unit enum.

Parameters
unitStrThe unit string to parse
Returns
The Unit enum value, or Unit::INVALID if not recognized

Definition at line 121 of file text_eval_units.h.

References info, text_eval_units::INVALID, and s_unitTable.

Referenced by convertToEdaUnits(), isValidUnit(), and KIEVAL_UNIT_CONV::parseUnit().

Member Data Documentation

◆ s_unitTable

std::array<UnitInfo, 15> text_eval_units::UnitRegistry::s_unitTable
staticconstexprprivate
Initial value:
= {{
{Unit::PS_PER_MM, "ps/mm", "Picoseconds per millimeter", 1.0},
{Unit::PS_PER_CM, "ps/cm", "Picoseconds per centimeter", 1.0},
{Unit::PS_PER_IN, "ps/in", "Picoseconds per inch", 1.0},
{Unit::THOU, "thou", "Thousandths of an inch", 25.4 / 1000.0},
{Unit::DEG, "deg", "Degrees", 1.0},
{Unit::MM, "mm", "Millimeters", 1.0},
{Unit::CM, "cm", "Centimeters", 10.0},
{Unit::INCH, "in", "Inches", 25.4},
{Unit::MIL, "mil", "Mils (thousandths of an inch)", 25.4 / 1000.0},
{Unit::UM, "um", "Micrometers", 1.0 / 1000.0},
{Unit::PS, "ps", "Picoseconds", 1.0},
{Unit::FS, "fs", "Femtoseconds", 1.0},
{Unit::INCH_QUOTE, "\"", "Inches (quote notation)", 25.4},
{Unit::DEGREE_SYMBOL, "°", "Degrees (symbol)", 1.0},
{Unit::INVALID, "", "Invalid/unknown unit", 1.0}
}}

Definition at line 88 of file text_eval_units.h.

Referenced by getAllUnitStrings(), getConversionFactor(), getUnitInfo(), getUnitString(), and parseUnit().


The documentation for this class was generated from the following file: