Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
Digxel< NUM, FMT > Class Template Reference

#include "lib/time/digxel.hpp"

Description

template<typename NUM, class FMT = digxel::Formatter<NUM>>
class lib::time::Digxel< NUM, FMT >

A number element for building structured numeric displays.

The purpose is to represent parts of a numeric format, like e.g. the sexagesimal "digits" of a timecode display. A Digxel

  • is customised by template parameters to a specific number format
  • requires that any given number must not overflow the format buffer
  • can receive new numbers by assignment
  • stores and these given value numerically
  • will then format these numbers and cache the formatted representation
  • can store and invoke a mutation functor to pre-process values on setting
Note
comparisons are assumed to be not performance relevant
Parameters
NUMnumeric type to be used for the value
FMTa formatter and buffer holder type
See also
digxel::Formatter default printf based formatter
lib::time::TCode
Digxel_test

Definition at line 216 of file digxel.hpp.

Public Member Functions

template<typename FUN , class THIS >
void installMutator (FUN mutate, THIS &self)
 install an external functor to be applied on any new digxel value.
 
 Digxel ()
 
 operator NUM () const
 
 operator string () const
 
size_t maxlen () const
 
digxel::CBuf show () const
 
void operator= (NUM n)
 
void setValueRaw (NUM newVal)
 
Digxeloperator+= (NUM inc)
 
Digxeloperator-= (NUM dec)
 
Digxeloperator++ ()
 
Digxeloperator-- ()
 
NUM operator++ (int)
 
NUM operator-- (int)
 
auto operator<=> (Digxel const &o) const
 
bool operator== (Digxel const &o) const
 

Private Types

typedef Digxel< NUM, FMT > _Digxel
 
typedef function< void(NUM)> _Mutator
 

Private Attributes

FMT buffer_
 
NUM value_
 
_Mutator mutator
 Functor for setting a new digxel value.
 

Constructor & Destructor Documentation

◆ Digxel()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
Digxel ( )
inline

Definition at line 247 of file digxel.hpp.

Member Typedef Documentation

◆ _Digxel

template<typename NUM , class FMT = digxel::Formatter<NUM>>
typedef Digxel<NUM,FMT> _Digxel
private

Definition at line 222 of file digxel.hpp.

◆ _Mutator

template<typename NUM , class FMT = digxel::Formatter<NUM>>
typedef function<void(NUM)> _Mutator
private

Definition at line 223 of file digxel.hpp.

Member Function Documentation

◆ installMutator()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
template<typename FUN , class THIS >
void installMutator ( FUN  mutate,
THIS &  self 
)
inline

install an external functor to be applied on any new digxel value.

This allows individual instances to limit the possible digxel values, or to update an compound value (e.g. a time comprised of hour, minute and second digxel elements). The installed functor needs to accept a "this" pointer and actually perform any desired state change as sideeffect. The default is to accept any value as-is.

Warning
using a mutator creates significant overhead; measurements indicate a factor of 4
See also
Digxel_test

Definition at line 241 of file digxel.hpp.

References Digxel< NUM, FMT >::mutator.

Referenced by lib::time::anonymous_namespace{timecode.cpp}::setupComponentNormalisation().

+ Here is the caller graph for this function:

◆ operator NUM()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
operator NUM ( ) const
inline

Definition at line 255 of file digxel.hpp.

◆ operator string()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
operator string ( ) const
inline

Definition at line 256 of file digxel.hpp.

References Digxel< NUM, FMT >::show().

+ Here is the call graph for this function:

◆ maxlen()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
size_t maxlen ( ) const
inline

Definition at line 258 of file digxel.hpp.

References Digxel< NUM, FMT >::buffer_.

◆ show()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
digxel::CBuf show ( ) const
inline

Definition at line 262 of file digxel.hpp.

References Digxel< NUM, FMT >::buffer_, and Digxel< NUM, FMT >::value_.

Referenced by Digxel< NUM, FMT >::operator string(), FrameNr::show(), SmpteTC::show(), and DigxelConfigurations_test::verifySignum().

+ Here is the caller graph for this function:

◆ operator=()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
void operator= ( NUM  n)
inline

Definition at line 269 of file digxel.hpp.

References Digxel< NUM, FMT >::mutator, Digxel< NUM, FMT >::setValueRaw(), and Digxel< NUM, FMT >::value_.

+ Here is the call graph for this function:

◆ setValueRaw()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
void setValueRaw ( NUM  newVal)
inline

◆ operator+=()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
Digxel & operator+= ( NUM  inc)
inline

Definition at line 291 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

◆ operator-=()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
Digxel & operator-= ( NUM  dec)
inline

Definition at line 292 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

◆ operator++() [1/2]

template<typename NUM , class FMT = digxel::Formatter<NUM>>
Digxel & operator++ ( )
inline

Definition at line 293 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

◆ operator--() [1/2]

template<typename NUM , class FMT = digxel::Formatter<NUM>>
Digxel & operator-- ( )
inline

Definition at line 294 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

◆ operator++() [2/2]

template<typename NUM , class FMT = digxel::Formatter<NUM>>
NUM operator++ ( int  )
inline

Definition at line 295 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

◆ operator--() [2/2]

template<typename NUM , class FMT = digxel::Formatter<NUM>>
NUM operator-- ( int  )
inline

Definition at line 296 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

◆ operator<=>()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
auto operator<=> ( Digxel< NUM, FMT > const &  o) const
inline

Definition at line 299 of file digxel.hpp.

◆ operator==()

template<typename NUM , class FMT = digxel::Formatter<NUM>>
bool operator== ( Digxel< NUM, FMT > const &  o) const
inline

Definition at line 300 of file digxel.hpp.

References Digxel< NUM, FMT >::value_.

Member Data Documentation

◆ buffer_

template<typename NUM , class FMT = digxel::Formatter<NUM>>
FMT buffer_
mutableprivate

◆ value_

◆ mutator

template<typename NUM , class FMT = digxel::Formatter<NUM>>
_Mutator mutator
private

Functor for setting a new digxel value.

Definition at line 226 of file digxel.hpp.

Referenced by Digxel< NUM, FMT >::installMutator(), and Digxel< NUM, FMT >::operator=().

+ Inheritance diagram for Digxel< NUM, FMT >:
+ Collaboration diagram for Digxel< NUM, FMT >:

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