rippled
Classes | Typedefs | Functions | Variables
ripple::feeunit Namespace Reference

Classes

class  TaggedFee
 

Typedefs

template<class T >
using enable_if_unit_t = typename std::enable_if_t< std::is_class_v< T > &&std::is_object_v< typename T::unit_type > &&std::is_object_v< typename T::value_type > >
 
template<class T >
using enable_muldiv_source_t = typename std::enable_if_t< can_muldiv_source_v< T > >
 
template<class T >
using enable_muldiv_dest_t = typename std::enable_if_t< can_muldiv_dest_v< T > >
 
template<class Source1 , class Source2 >
using enable_muldiv_sources_t = typename std::enable_if_t< can_muldiv_sources_v< Source1, Source2 > >
 
template<class Source1 , class Source2 , class Dest >
using enable_muldiv_t = typename std::enable_if_t< can_muldiv_v< Source1, Source2, Dest > >
 
template<class Source1 , class Source2 , class Dest >
using enable_muldiv_commute_t = typename std::enable_if_t< can_muldiv_commute_v< Source1, Source2, Dest > >
 

Functions

template<class Char , class Traits , class UnitTag , class T >
std::basic_ostream< Char, Traits > & operator<< (std::basic_ostream< Char, Traits > &os, const TaggedFee< UnitTag, T > &q)
 
template<class UnitTag , class T >
std::string to_string (TaggedFee< UnitTag, T > const &amount)
 
template<class T >
TaggedFee< unitlessTag, T > scalar (T value)
 
template<class Source1 , class Source2 , class Dest , class = enable_muldiv_t<Source1, Source2, Dest>>
std::pair< bool, Dest > mulDivU (Source1 value, Dest mul, Source2 div)
 

Variables

template<class T , class = enable_if_unit_t<T>>
constexpr bool is_usable_unit_v
 is_usable_unit_v is checked to ensure that only values with known valid type tags can be used (sometimes transparently) in non-fee contexts. More...
 
template<class Source , class = enable_if_unit_t<Source>>
constexpr bool can_muldiv_source_v
 
template<class Dest , class = enable_if_unit_t<Dest>>
constexpr bool can_muldiv_dest_v
 
template<class Source1 , class Source2 , class = enable_if_unit_t<Source1>, class = enable_if_unit_t<Source2>>
constexpr bool can_muldiv_sources_v
 
template<class Source1 , class Source2 , class Dest , class = enable_if_unit_t<Source1>, class = enable_if_unit_t<Source2>, class = enable_if_unit_t<Dest>>
constexpr bool can_muldiv_v
 
template<class Source1 , class Source2 , class Dest , class = enable_if_unit_t<Source1>, class = enable_if_unit_t<Source2>, class = enable_if_unit_t<Dest>>
constexpr bool can_muldiv_commute_v
 

Typedef Documentation

◆ enable_if_unit_t

template<class T >
using ripple::feeunit::enable_if_unit_t = typedef typename std::enable_if_t< std::is_class_v<T> && std::is_object_v<typename T::unit_type> && std::is_object_v<typename T::value_type> >

Definition at line 53 of file FeeUnits.h.

◆ enable_muldiv_source_t

template<class T >
using ripple::feeunit::enable_muldiv_source_t = typedef typename std::enable_if_t<can_muldiv_source_v<T> >

Definition at line 383 of file FeeUnits.h.

◆ enable_muldiv_dest_t

template<class T >
using ripple::feeunit::enable_muldiv_dest_t = typedef typename std::enable_if_t<can_muldiv_dest_v<T> >

Definition at line 386 of file FeeUnits.h.

◆ enable_muldiv_sources_t

template<class Source1 , class Source2 >
using ripple::feeunit::enable_muldiv_sources_t = typedef typename std::enable_if_t<can_muldiv_sources_v<Source1, Source2> >

Definition at line 390 of file FeeUnits.h.

◆ enable_muldiv_t

template<class Source1 , class Source2 , class Dest >
using ripple::feeunit::enable_muldiv_t = typedef typename std::enable_if_t<can_muldiv_v<Source1, Source2, Dest> >

Definition at line 394 of file FeeUnits.h.

◆ enable_muldiv_commute_t

template<class Source1 , class Source2 , class Dest >
using ripple::feeunit::enable_muldiv_commute_t = typedef typename std::enable_if_t<can_muldiv_commute_v<Source1, Source2, Dest> >

Definition at line 398 of file FeeUnits.h.

Function Documentation

◆ operator<<()

template<class Char , class Traits , class UnitTag , class T >
std::basic_ostream<Char, Traits>& ripple::feeunit::operator<< ( std::basic_ostream< Char, Traits > &  os,
const TaggedFee< UnitTag, T > &  q 
)

Definition at line 329 of file FeeUnits.h.

◆ to_string()

template<class UnitTag , class T >
std::string ripple::feeunit::to_string ( TaggedFee< UnitTag, T > const &  amount)

Definition at line 336 of file FeeUnits.h.

◆ scalar()

template<class T >
TaggedFee<unitlessTag, T> ripple::feeunit::scalar ( value)

Definition at line 402 of file FeeUnits.h.

◆ mulDivU()

template<class Source1 , class Source2 , class Dest , class = enable_muldiv_t<Source1, Source2, Dest>>
std::pair<bool, Dest> ripple::feeunit::mulDivU ( Source1  value,
Dest  mul,
Source2  div 
)

Definition at line 413 of file FeeUnits.h.

Variable Documentation

◆ is_usable_unit_v

template<class T , class = enable_if_unit_t<T>>
constexpr bool ripple::feeunit::is_usable_unit_v
constexpr
Initial value:
=
std::is_same_v<typename T::unit_type, feeunitTag> ||
std::is_same_v<typename T::unit_type, feelevelTag> ||
std::is_same_v<typename T::unit_type, unitlessTag> ||
std::is_same_v<typename T::unit_type, dropTag>

is_usable_unit_v is checked to ensure that only values with known valid type tags can be used (sometimes transparently) in non-fee contexts.

At the time of implementation, this includes all known tags, but more may be added in the future, and they should not be added automatically unless determined to be appropriate.

Definition at line 63 of file FeeUnits.h.

◆ can_muldiv_source_v

template<class Source , class = enable_if_unit_t<Source>>
constexpr bool ripple::feeunit::can_muldiv_source_v
constexpr
Initial value:
=
std::is_convertible_v<typename Source::value_type, std::uint64_t>

Definition at line 342 of file FeeUnits.h.

◆ can_muldiv_dest_v

template<class Dest , class = enable_if_unit_t<Dest>>
constexpr bool ripple::feeunit::can_muldiv_dest_v
constexpr
Initial value:
=
can_muldiv_source_v<Dest>&&
std::is_convertible_v<std::uint64_t, typename Dest::value_type> &&
sizeof(typename Dest::value_type) >= sizeof(std::uint64_t)

Definition at line 346 of file FeeUnits.h.

◆ can_muldiv_sources_v

template<class Source1 , class Source2 , class = enable_if_unit_t<Source1>, class = enable_if_unit_t<Source2>>
constexpr bool ripple::feeunit::can_muldiv_sources_v
constexpr
Initial value:
=
can_muldiv_source_v<Source1>&& can_muldiv_source_v<Source2>&& std::
is_same_v<typename Source1::unit_type, typename Source2::unit_type>

Definition at line 356 of file FeeUnits.h.

◆ can_muldiv_v

template<class Source1 , class Source2 , class Dest , class = enable_if_unit_t<Source1>, class = enable_if_unit_t<Source2>, class = enable_if_unit_t<Dest>>
constexpr bool ripple::feeunit::can_muldiv_v
constexpr
Initial value:
=
can_muldiv_sources_v<Source1, Source2>&& can_muldiv_dest_v<Dest>

Definition at line 367 of file FeeUnits.h.

◆ can_muldiv_commute_v

template<class Source1 , class Source2 , class Dest , class = enable_if_unit_t<Source1>, class = enable_if_unit_t<Source2>, class = enable_if_unit_t<Dest>>
constexpr bool ripple::feeunit::can_muldiv_commute_v
constexpr
Initial value:
= can_muldiv_v<Source1, Source2, Dest> &&
!std::is_same_v<typename Source1::unit_type, typename Dest::unit_type>

Definition at line 378 of file FeeUnits.h.

std::uint64_t