Basis Unit

A unit representing a fixed multiple of a native dimension.

Context

_images/ditaa-cec989073f835607919dbe4cb7ee2cecf0fa3971.png

Introduction

A basis_unit represents a unit belonging to a single native dimension. For example bu::meter representing a distance of 1 meter.

#include <xo/unit/basis_unit.hpp>

object bu1<<basis_unit>>
bu1 : native_dim = time
bu1 : scalefactor = 60

basis unit representing 1 minute

basis_unit is intended as an implementation-level abstraction. Application code will normally interact with the more-capable scaled_unit instead of basis_unit.

Class

class basis_unit

A dimensionless multiple of a single natively-specified basis dimension.

For example “3600 minutes” or “1e-6 grams”.

Members are public so that a basis_unit instance qualifies as a ‘structural type’, and therefore may be used as a non-type template parameter.

Member Variables

group basis_unit instance variables

Variables

dimension native_dim_ = dimension::invalid

identifies a native unit, e.g. time

scalefactor_ratio_type scalefactor_ = {}

this unit defined as multiple scalefactor times native unit

Constructors

group basis_unit constructors

Functions

constexpr basis_unit() = default

sentinel basis unit: invalid dimension and zero scalefactor

inline constexpr basis_unit(dimension native_dim, const scalefactor_ratio_type &scalefactor)

basis unit representing multiple scalefactor of native dimension

Access Methods

group basis_unit access methods

Functions

inline dimension native_dim() const

get native_dim member

inline const scalefactor_ratio_type &scalefactor() const

get scalefactor member

Comparison

group basis_unit comparisons

Functions

inline bool operator==(const basis_unit &x, const basis_unit &y)

true iff basis units are equal; both native dimension and scalefactor must be equal

inline bool operator!=(const basis_unit &x, const basis_unit &y)

true iff bass units are not equal