jaulib v1.1.2-28-g30efb27-dirty
Jau Support Library (C++, Java, ..)
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
jau Namespace Reference

__pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros. More...

Namespaces

namespace  codec
 
namespace  cpu
 
namespace  CT
 Functions for constant time operations on data and testing of constant time annotations using valgrind.
 
namespace  fraction_tv
 
namespace  fractions_i64
 fractions namespace to provide fraction constants using int64_t as underlying integral integer type.
 
namespace  fractions_i64_literals
 
namespace  fs
 Author: Sven Gothel sgoth.nosp@m.el@j.nosp@m.ausof.nosp@m.t.co.nosp@m.m Copyright (c) 2022 Gothel Software e.K.
 
namespace  func
 
namespace  impl
 
namespace  int_literals
 
namespace  io
 
namespace  jni
 
namespace  lang
 
namespace  mp
 big_int_t (this file) (c) 2024 Gothel Software e.K.
 

Classes

class  call_on_release
 Call on release allows the user to pass a function to be called at destruction of this instance. More...
 
struct  callocator
 A simple allocator using POSIX C functions: ::malloc(), ::free() and ::realloc(). More...
 
struct  callocator_sec
 A simple secure allocator for integral types using POSIX C functions: ::malloc() and ::free(). More...
 
struct  counting_allocator
 Performance counter std::allocator specialization. More...
 
struct  counting_callocator
 Performance counter jau::callocator specialization. More...
 
class  cow_darray
 Implementation of a Copy-On-Write (CoW) using jau::darray as the underlying storage, exposing lock-free read operations using SC-DRF atomic synchronization. More...
 
class  cow_ro_iterator
 Implementation of a Copy-On-Write (CoW) read-onlu iterator over immutable value_type storage. More...
 
class  cow_rw_iterator
 Implementation of a Copy-On-Write (CoW) read-write iterator over mutable value_type storage. More...
 
class  cow_vector
 Implementation of a Copy-On-Write (CoW) using std::vector as the underlying storage, exposing lock-free read operations using SC-DRF atomic synchronization. More...
 
class  darray
 Implementation of a dynamic linear array storage, aka vector. More...
 
class  darray_sorted
 Extension to darray resulting in a sorted darray via insert(). More...
 
class  environment
 Main jau environment class, supporting environment variable access and fetching elapsed time using its stored startup-time. More...
 
struct  EUI48
 A packed 48 bit EUI-48 identifier, formerly known as MAC-48 or simply network device MAC address (Media Access Control address). More...
 
struct  EUI48Sub
 A 48 bit EUI-48 sub-identifier, see EUI48. More...
 
class  ExceptionBase
 
class  fraction
 Fraction template type using integral values, evaluated at runtime. More...
 
struct  fraction_timespec
 Timespec structure using int64_t for its components in analogy to struct timespec_t on 64-bit platforms. More...
 
class  function
 Class template jau::function is a general-purpose static-polymorphic function wrapper. More...
 
class  function< R(A...)>
 Class template jau::function is a general-purpose static-polymorphic function wrapper. More...
 
struct  has_builtin_bit_cast
 Convenience type trait for __has_builtin(__builtin_bit_cast). More...
 
struct  has_endian_big
 A big-endian type trait for convenience . More...
 
struct  has_endian_little
 A little-endian type trait for convenience . More...
 
struct  has_member_of_pointer
 Checker for member of pointer '->' operator with convertible pointer return, no arguments. More...
 
struct  has_member_of_pointer< C, typename std::enable_if< std::is_pointer< decltype(std::declval< C >().operator->())>::value >::type >
 
class  IllegalArgumentException
 
class  IllegalStateException
 
class  IndexOutOfBoundsException
 
class  InternalError
 
class  IOError
 
struct  is_container_memmove_compliant
 template< class T > is_container_memmove_compliant<T>::value compile-time Type Trait, determining whether the given template class claims to be container memmove compliant, see @Ref darray_memmove. More...
 
struct  is_container_memmove_compliant< T, std::void_t< typename T::container_memmove_compliant > >
 template< class T > is_container_memmove_compliant<T>::value compile-time Type Trait, determining whether the given template class claims to be container memmove compliant, see @Ref darray_memmove. More...
 
struct  is_cow_type
 template< class T > is_cow_type<T>::value compile-time Type Trait, determining whether the given template class is a CoW type, e.g. More...
 
struct  is_cow_type< T, std::void_t< typename T::cow_container_t > >
 template< class T > is_cow_type<T>::value compile-time Type Trait, determining whether the given template class is a CoW type, e.g. More...
 
struct  is_darray_type
 template< class T > is_darray_type<T>::value compile-time Type Trait, determining whether the given template class is a - or has a darray type, e.g. More...
 
struct  is_darray_type< T, std::void_t< typename T::darray_tag > >
 template< class T > is_darray_type<T>::value compile-time Type Trait, determining whether the given template class is a - or has a darray type, e.g. More...
 
struct  is_enforcing_secmem
 template< class T > is_enforcing_secmem<T>::value compile-time Type Trait, determining whether the given template class enforces secmem, see @Ref darray_secmem. More...
 
struct  is_enforcing_secmem< T, std::void_t< typename T::enforce_secmem > >
 template< class T > is_enforcing_secmem<T>::value compile-time Type Trait, determining whether the given template class enforces secmem, see @Ref darray_secmem. More...
 
struct  is_rtti_available_t
 Template type trait evaluating std::true_type{} if RTTI is available, otherwise std::false_type{}. More...
 
class  latch
 Inspired by std::latch of C++20. More...
 
class  MathDivByZeroError
 math_error_t::div_by_zero, i.e. More...
 
class  MathDomainError
 math_error_t::invalid More...
 
class  MathError
 
class  MathInexactError
 math_error_t::inexact More...
 
class  MathOverflowError
 math_error_t::overflow More...
 
class  MathUnderflowError
 math_error_t::underflow More...
 
class  NotImplementedError
 
class  NullPointerException
 
struct  ordered_atomic
 std::atomic<T> type with predefined fixed std::memory_order, not allowing changing the memory model on usage and applying the set order to all operator. More...
 
class  OutOfMemoryError
 
struct  packed_t
 Support aligned memory transfer from and to potentially unaligned memory. More...
 
class  POctets
 Persistent endian aware octet data, i.e. More...
 
class  ringbuffer
 Ring buffer implementation, a.k.a circular buffer, exposing lock-free get*(..) and put*(..) methods. More...
 
class  root_environment
 Base jau environment class, merely to tag all environment settings by inheritance and hence documentation. More...
 
class  RuntimeException
 
class  sc_atomic_critical
 This class provides a RAII-style Sequentially Consistent (SC) data race free (DRF) critical block. More...
 
class  service_runner
 Service runner, a reusable dedicated thread performing custom user services. More...
 
class  simple_timer
 A simple timer for timeout and interval applications, using one dedicated service_runner thread per instance. More...
 
class  TOctets
 Transient endian aware octet data, i.e. More...
 
class  TOctetSlice
 Transient endian aware octet data slice, i.e. More...
 
class  TROOctets
 Transient read only and endian aware octet data, i.e. More...
 
struct  type_cue
 Helper, allowing simple access to compile time typename and Type traits information, see jau::type_name_cue to setup typename's string representation. More...
 
class  type_info
 Generic type information using either Runtime type information (RTTI) or Compile time type information (CTTI) More...
 
struct  type_name_cue
 Helper, allowing simple access and provision of a typename string representation at compile time, see jau::type_cue for usage. More...
 
struct  uint128dp_t
 A 128-bit packed uint8_t data array. More...
 
struct  uint192dp_t
 A 196-bit packed uint8_t data array. More...
 
struct  uint256dp_t
 A 256-bit packed uint8_t data array. More...
 
class  UnsupportedOperationException
 
class  uuid128_t
 
class  uuid16_t
 
class  uuid32_t
 
class  uuid_t
 

Typedefs

typedef fraction< int64_t > fraction_i64
 fraction using int64_t as integral type More...
 
typedef fraction< uint64_t > fraction_u64
 fraction using uint64_t as integral type More...
 
typedef uint_fast32_t nsize_t
 Natural 'size_t' alternative using uint_fast32_t as its natural sized type. More...
 
typedef ordered_atomic< bool, std::memory_order_relaxed > relaxed_atomic_bool
 Relaxed non-SC atomic integral scalar boolean. More...
 
typedef ordered_atomic< jau::fraction_i64, std::memory_order_relaxed > relaxed_atomic_fraction_i64
 Relaxed non-SC atomic integral scalar jau::fraction_i64. More...
 
typedef ordered_atomic< jau::fraction_u64, std::memory_order_relaxed > relaxed_atomic_fraction_u64
 Relaxed non-SC atomic integral scalar jau::fraction_u64. More...
 
typedef ordered_atomic< int, std::memory_order_relaxed > relaxed_atomic_int
 Relaxed non-SC atomic integral scalar integer. More...
 
typedef ordered_atomic< int16_t, std::memory_order_relaxed > relaxed_atomic_int16
 Relaxed non-SC atomic integral scalar int16_t. More...
 
typedef ordered_atomic< int32_t, std::memory_order_relaxed > relaxed_atomic_int32
 Relaxed non-SC atomic integral scalar int32_t. More...
 
typedef ordered_atomic< int64_t, std::memory_order_relaxed > relaxed_atomic_int64
 Relaxed non-SC atomic integral scalar int64_t. More...
 
typedef ordered_atomic< int8_t, std::memory_order_relaxed > relaxed_atomic_int8
 Relaxed non-SC atomic integral scalar int8_t. More...
 
typedef ordered_atomic< jau::nsize_t, std::memory_order_relaxed > relaxed_atomic_nsize_t
 Relaxed non-SC atomic integral scalar jau::nsize_t. More...
 
typedef ordered_atomic< std::size_t, std::memory_order_relaxed > relaxed_atomic_size_t
 Relaxed non-SC atomic integral scalar size_t. More...
 
typedef ordered_atomic< jau::snsize_t, std::memory_order_relaxed > relaxed_atomic_snsize_t
 Relaxed non-SC atomic integral scalar jau::snsize_t. More...
 
typedef ordered_atomic< ssize_t, std::memory_order_relaxed > relaxed_atomic_ssize_t
 Relaxed non-SC atomic integral scalar ssize_t. More...
 
typedef ordered_atomic< uint16_t, std::memory_order_relaxed > relaxed_atomic_uint16
 Relaxed non-SC atomic integral scalar uint16_t. More...
 
typedef ordered_atomic< uint32_t, std::memory_order_relaxed > relaxed_atomic_uint32
 Relaxed non-SC atomic integral scalar uint32_t. More...
 
typedef ordered_atomic< uint64_t, std::memory_order_relaxed > relaxed_atomic_uint64
 Relaxed non-SC atomic integral scalar uint64_t. More...
 
typedef ordered_atomic< uint8_t, std::memory_order_relaxed > relaxed_atomic_uint8
 Relaxed non-SC atomic integral scalar uint8_t. More...
 
typedef ordered_atomic< bool, std::memory_order_seq_cst > sc_atomic_bool
 SC atomic integral scalar boolean. More...
 
typedef ordered_atomic< jau::fraction_i64, std::memory_order_seq_cst > sc_atomic_fraction_i64
 SC atomic integral scalar jau::fraction_i64. More...
 
typedef ordered_atomic< jau::fraction_u64, std::memory_order_seq_cst > sc_atomic_fraction_u64
 SC atomic integral scalar jau::fraction_u64. More...
 
typedef ordered_atomic< int, std::memory_order_seq_cst > sc_atomic_int
 SC atomic integral scalar integer. More...
 
typedef ordered_atomic< int16_t, std::memory_order_seq_cst > sc_atomic_int16
 SC atomic integral scalar int16_t. More...
 
typedef ordered_atomic< int32_t, std::memory_order_seq_cst > sc_atomic_int32
 SC atomic integral scalar int32_t. More...
 
typedef ordered_atomic< int64_t, std::memory_order_seq_cst > sc_atomic_int64
 SC atomic integral scalar int64_t. More...
 
typedef ordered_atomic< int8_t, std::memory_order_seq_cst > sc_atomic_int8
 SC atomic integral scalar int8_t. More...
 
typedef ordered_atomic< jau::nsize_t, std::memory_order_seq_cst > sc_atomic_nsize_t
 SC atomic integral scalar jau::nsize_t. More...
 
typedef ordered_atomic< std::size_t, std::memory_order_seq_cst > sc_atomic_size_t
 SC atomic integral scalar size_t. More...
 
typedef ordered_atomic< jau::snsize_t, std::memory_order_seq_cst > sc_atomic_snsize_t
 SC atomic integral scalar jau::snsize_t. More...
 
typedef jau::ordered_atomic< ssize_t, std::memory_order_seq_cst > sc_atomic_ssize_t
 SC atomic integral scalar ssize_t. More...
 
typedef ordered_atomic< uint16_t, std::memory_order_seq_cst > sc_atomic_uint16
 SC atomic integral scalar uint16_t. More...
 
typedef ordered_atomic< uint32_t, std::memory_order_seq_cst > sc_atomic_uint32
 SC atomic integral scalar uint32_t. More...
 
typedef ordered_atomic< uint64_t, std::memory_order_seq_cst > sc_atomic_uint64
 SC atomic integral scalar uint64_t. More...
 
typedef ordered_atomic< uint8_t, std::memory_order_seq_cst > sc_atomic_uint8
 SC atomic integral scalar uint8_t. More...
 
typedef int_fast32_t snsize_t
 Natural 'ssize_t' alternative using int_fast32_t as its natural sized type. More...
 

Enumerations

enum class  endian : uint32_t {
  endian::little = 0x41424344U , endian::big = 0x44434241U , endian::pdp = 0x43444142U , endian::honeywell = 0x42414443U ,
  endian::undefined = 0x00000000U , endian::native = impl::get_host_order()
}
 Endian identifier, indicating endianess of all scalar types. More...
 
enum class  lb_endian : uint32_t { lb_endian::little = static_cast<uint32_t>( endian::little ) , lb_endian::big = static_cast<uint32_t>( endian::big ) , lb_endian::native = static_cast<uint32_t>( endian::native ) }
 Simplified reduced endian type only covering little- and big-endian. More...
 
enum class  math_error_t {
  math_error_t::invalid , math_error_t::div_by_zero , math_error_t::overflow , math_error_t::underflow ,
  math_error_t::inexact
}
 Error types as specified by C++ Math Error Handling More...
 
enum class  TypeTraitGroup : uint8_t {
  TypeTraitGroup::NONE = 0b00000000 , TypeTraitGroup::PRIMARY_TYPE_CAT = 0b00000001 , TypeTraitGroup::TYPE_PROPERTIES = 0b00000010 , TypeTraitGroup::COMPOSITE_TYPE_CAT = 0b00000100 ,
  TypeTraitGroup::SUPPORTED_OPERATIONS = 0b00001000 , TypeTraitGroup::ALL = 0b11111111
}
 Enumerating the different groups of type traits. More...
 

Functions

void ABORT_impl (const char *func, const char *file, const int line, const char *format,...) noexcept
 Use for unconditional ::abort() call with given messages, prefix '[elapsed_time] ABORT @ file:line func: '. More...
 
template<typename int_type >
constexpr fraction< int_type > abs (const fraction< int_type > &rhs) noexcept
 Returns the absolute fraction. More...
 
constexpr fraction_timespec abs (const fraction_timespec &rhs) noexcept
 Returns the absolute fraction_timespec. More...
 
template<typename T , std::enable_if_t< std::is_arithmetic_v< T > &&!std::is_unsigned_v< T >, bool > = true>
constexpr T abs (const T x) noexcept
 Returns the absolute value of an arithmetic number (w/ branching) in O(1) More...
 
mp::big_int_t abs (mp::big_int_t x) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr bool add_overflow (const T a, const T b, T &res) noexcept
 Integer overflow aware addition returning true if overflow occurred, otherwise false having the result stored in res. More...
 
template<class T >
std::enable_if<!std::numeric_limits< T >::is_integer, bool >::type almost_equal (const T &a, const T &b, int ulp=1, const T &epsilon=std::numeric_limits< T >::epsilon())
 Returns true, if both floating point values are equal in the sense that their potential difference is less or equal epsilon * |a+b| * ulp, where |a+b| scales epsilon to the magnitude of used values. More...
 
constexpr EUI48 be_to_cpu (EUI48 const &n) noexcept
 
constexpr uint128dp_t be_to_cpu (uint128dp_t const &n) noexcept
 
constexpr uint16_t be_to_cpu (uint16_t const n) noexcept
 
constexpr uint192dp_t be_to_cpu (uint192dp_t const &n) noexcept
 
constexpr uint256dp_t be_to_cpu (uint256dp_t const &n) noexcept
 
constexpr uint32_t be_to_cpu (uint32_t const n) noexcept
 
constexpr uint64_t be_to_cpu (uint64_t const &n) noexcept
 
template<typename R , typename I , typename... A>
jau::function< R(A...)> bind_capref (I *data_ptr, R(*func)(I *, A...)) noexcept
 Bind given data by passing the captured reference (pointer) to the value and non-void function to an anonymous function using func::capref_target_t. More...
 
template<typename I , typename... A>
jau::function< void(A...)> bind_capref (I *data_ptr, void(*func)(I *, A...)) noexcept
 Bind given data by passing the captured reference (pointer) to the value and void function to an anonymous function using func::capref_target_t. More...
 
template<typename R , typename I , typename... A>
jau::function< R(A...)> bind_capval (const I &data, R(*func)(I &, A...)) noexcept
 Bind given data by copying the captured value and the given non-void function to an anonymous function using func::capval_target_t. More...
 
template<typename I , typename... A>
jau::function< void(A...)> bind_capval (const I &data, void(*func)(I &, A...)) noexcept
 Bind given data by copying the captured value and the given void function to an anonymous function using func::capval_target_t. More...
 
template<typename R , typename I , typename... A>
jau::function< R(A...)> bind_capval (I &&data, R(*func)(I &, A...)) noexcept
 Bind given data by moving the captured value and copying the given non-void function to an anonymous function using func::capval_target_t. More...
 
template<typename I , typename... A>
jau::function< void(A...)> bind_capval (I &&data, void(*func)(I &, A...)) noexcept
 Bind given data by moving the captured value and copying the given void function to an anonymous function using func::capval_target_t. More...
 
template<typename R , typename... A>
jau::function< R(A...)> bind_free (R(*func)(A...)) noexcept
 Bind given non-void free-function to an anonymous function using func::free_target_t. More...
 
template<typename... A>
jau::function< void(A...)> bind_free (void(*func)(A...)) noexcept
 Bind given void free-function to an anonymous function using func::free_target_t. More...
 
template<typename R , typename C , typename... A>
jau::function< R(A...)> bind_member (C *base, R(C::*mfunc)(A...)) noexcept
 Bind given class instance and non-void member function to an anonymous function using func_member_targer_t. More...
 
template<typename C , typename... A>
jau::function< void(A...)> bind_member (C *base, void(C::*mfunc)(A...)) noexcept
 Bind given class instance and void member function to an anonymous function using func_member_targer_t. More...
 
template<typename R , typename C0 , typename C1 , typename... A>
jau::function< R(A...)> bind_member (C1 *base, R(C0::*mfunc)(A...)) noexcept
 Bind given class instance and non-void member function to an anonymous function using func_member_targer_t. More...
 
template<typename C0 , typename C1 , typename... A>
jau::function< void(A...)> bind_member (C1 *base, void(C0::*mfunc)(A...)) noexcept
 Bind given class instance and void member function to an anonymous function using func_member_targer_t. More...
 
template<typename R , typename... A>
jau::function< R(A...)> bind_std (uint64_t id, std::function< R(A...)> func) noexcept
 Bind given non-void std::function to an anonymous function using func::std_target_t. More...
 
template<typename... A>
jau::function< void(A...)> bind_std (uint64_t id, std::function< void(A...)> func) noexcept
 Bind given void std::function to an anonymous function using func::std_target_t. More...
 
template<class Dest , class Source >
constexpr std::enable_if_t< sizeof(Dest)==sizeof(Source) &&std::is_trivially_copyable_v< Dest > &&std::is_trivially_copyable_v< Source >, Dest > bit_cast (const Source &src) noexcept
 C++20 bit_cast<>(arg) implementation for C++17. More...
 
constexpr EUI48 bswap (EUI48 const &source) noexcept
 
constexpr uint128dp_t bswap (uint128dp_t const &source) noexcept
 
constexpr uint16_t bswap (uint16_t const source) noexcept
 
constexpr uint192dp_t bswap (uint192dp_t const &source) noexcept
 
constexpr uint256dp_t bswap (uint256dp_t const &source) noexcept
 
constexpr uint32_t bswap (uint32_t const source) noexcept
 
constexpr uint64_t bswap (uint64_t const &source) noexcept
 
constexpr void bswap (uint8_t *sink, uint8_t const *source, nsize_t len)
 
static constexpr void bswap_6bytes (uint8_t *sink, const uint8_t *source) noexcept
 
std::string & byteHexString (std::string &dest, const uint8_t value, const bool lowerCase) noexcept
 Produce a hexadecimal string representation of the given byte value. More...
 
template<class uint8_container_type , std::enable_if_t< std::is_integral_v< typename uint8_container_type::value_type > &&std::is_convertible_v< typename uint8_container_type::value_type, uint8_t >, bool > = true>
std::string bytesHexString (const uint8_container_type &bytes, const bool lsbFirst, const bool lowerCase=true) noexcept
 
std::string bytesHexString (const void *data, const nsize_t offset, const nsize_t length, const bool lsbFirst, const bool lowerCase=true) noexcept
 Produce a hexadecimal string representation of the given byte values. More...
 
const uint8_t * cast_char_ptr_to_uint8 (const char *s) noexcept
 
const char * cast_uint8_ptr_to_char (const uint8_t *b) noexcept
 
char * cast_uint8_ptr_to_char (uint8_t *b) noexcept
 
const mp::big_int_tclamp (const mp::big_int_t &x, const mp::big_int_t &min_val, const mp::big_int_t &max_val) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr T clamp (const T x, const T min_val, const T max_val) noexcept
 Returns constrained integral value to lie between given min- and maximum value (w/ branching) in O(1). More...
 
mp::big_int_tclamp (mp::big_int_t &x, mp::big_int_t &min_val, mp::big_int_t &max_val) noexcept
 
void clear_bit_uint32 (const uint8_t nr, uint32_t &mask)
 
void clear_bit_uint64 (const uint8_t nr, uint64_t &mask)
 
void COND_PRINT_impl (const char *format,...) noexcept
 
template<class InputArray , class T >
constexpr bool contains (InputArray &array, const T &value)
 Return true if value is contained in array. More...
 
constexpr EUI48 cpu_to_be (EUI48 const &h) noexcept
 
constexpr uint128dp_t cpu_to_be (uint128dp_t const &h) noexcept
 
constexpr uint16_t cpu_to_be (uint16_t const h) noexcept
 
constexpr uint192dp_t cpu_to_be (uint192dp_t const &h) noexcept
 
constexpr uint256dp_t cpu_to_be (uint256dp_t const &h) noexcept
 
constexpr uint32_t cpu_to_be (uint32_t const h) noexcept
 
constexpr uint64_t cpu_to_be (uint64_t const &h) noexcept
 
constexpr EUI48 cpu_to_le (EUI48 const &h) noexcept
 
constexpr uint128dp_t cpu_to_le (uint128dp_t const &h) noexcept
 
constexpr uint16_t cpu_to_le (uint16_t const h) noexcept
 
constexpr uint192dp_t cpu_to_le (uint192dp_t const &h) noexcept
 
constexpr uint256dp_t cpu_to_le (uint256dp_t const &h) noexcept
 
constexpr uint32_t cpu_to_le (uint32_t const h) noexcept
 
constexpr uint64_t cpu_to_le (uint64_t const &h) noexcept
 
template<typename T , std::enable_if_t< std::is_arithmetic_v< T > &&std::is_integral_v< T > &&!std::is_unsigned_v< T >, bool > = true>
constexpr T ct_abs (const T x) noexcept
 Returns the absolute value of an arithmetic number (w/o branching) in O(1) and constant time (CT), while not covering INT_MIN -> INT_MAX conversion as abs(), see above. More...
 
constexpr uint32_t ct_bit_count (uint32_t n) noexcept
 Returns the number of set bits within given 32bit integer (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr T ct_clamp (const T x, const T min_val, const T max_val) noexcept
 Returns constrained integral value to lie between given min- and maximum value for MIN <= x - y <= MAX (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true>
constexpr T ct_expand_top_bit (T x)
 Returns ~0 (2-complement) if top bit of arg is set, otherwise 0 (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true>
constexpr T ct_is_zero (T x)
 Returns ~0 (2-complement) if arg is zero, otherwise 0 (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true>
constexpr T ct_masked_merge (T mask, T a_if_masked, T b_if_unmasked)
 Returns merged a_if_masked bits selected by mask 1 bits and b_if_unmasked bits selected by mask 0 bits (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr T ct_max (const T x, const T y) noexcept
 Returns the maximum of two integrals for MIN <= x - y <= MAX (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr T ct_min (const T x, const T y) noexcept
 Returns the minimum of two integrals for MIN <= x - y <= MAX (w/o branching) in O(1) and constant time (CT). More...
 
constexpr uint32_t ct_next_power_of_2 (uint32_t n)
 Returns the next higher power of 2 of given unsigned 32-bit n (w/o branching) in O(1) and constant time (CT). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr int ct_sign (const T x) noexcept
 Returns the value of the sign function (w/o branching) in O(1) and constant time (CT) More...
 
template<typename T >
constexpr const char * ctti_name () noexcept
 Returns the type name of given type T using template Compile Time Type Information (CTTI) only with static constant storage duration. More...
 
template<typename R , typename L , typename... A>
constexpr const char * ctti_name () noexcept
 Returns the type name of given function types R(*L)(A...) using template Compile Time Type Information (CTTI) only with static constant storage duration. More...
 
void DBG_PRINT_impl (const char *format,...) noexcept
 
std::string demangle_name (const char *mangled_name) noexcept
 Returns the demangled given mangled_name if successful, otherwise the mangled_name. More...
 
std::string dfa_utf8_decode (const uint8_t *buffer, const size_t buffer_size)
 Returns all valid consecutive UTF-8 characters within buffer in the range up to buffer_size or until EOS. More...
 
uint32_t dfa_utf8_decode (uint32_t &state, uint32_t &codep, const uint32_t byte_value)
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr nsize_t digits10 (const T x, const bool sign_is_digit=true) noexcept
 Returns the number of decimal digits of the given integral value number using std::log10<T>(). More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr nsize_t digits10 (const T x, const snsize_t x_sign, const bool sign_is_digit=true) noexcept
 Returns the number of decimal digits of the given integral value number using std::log10<T>(). More...
 
void ERR_PRINT_impl (const char *prefix, const bool backtrace, const char *func, const char *file, const int line, const char *format,...) noexcept
 
void ERR_PRINTv (const char *func, const char *file, const int line, const char *format, va_list args) noexcept
 Use for unconditional error messages, prefix '[elapsed_time] Error @ file:line func: '. More...
 
template<class InputIt , class T >
constexpr InputIt find (InputIt first, InputIt last, const T &value)
 Like std::find() of 'algorithm'. More...
 
template<class T >
const T::value_type * find_const (T &data, typename T::value_type const &elem, std::enable_if_t< !is_cow_type< T >::value, bool >=true) noexcept
 
template<class T >
const T::value_type * find_const (T &data, typename T::value_type const &elem, std::enable_if_t< is_cow_type< T >::value, bool >=true) noexcept
 
template<class InputIt , class UnaryPredicate >
constexpr InputIt find_if (InputIt first, InputIt last, UnaryPredicate p)
 Like std::find_if() of 'algorithm'. More...
 
template<class InputIt , class UnaryPredicate >
constexpr InputIt find_if_not (InputIt first, InputIt last, UnaryPredicate q)
 Like std::find_if_not() of 'algorithm'. More...
 
template<class InputIt , class UnaryFunction >
constexpr UnaryFunction for_each (InputIt first, InputIt last, UnaryFunction f)
 Like std::for_each() of 'algorithm'. More...
 
template<class T , class UnaryFunction >
constexpr UnaryFunction for_each_const (T &data, UnaryFunction f, std::enable_if_t< !is_cow_type< T >::value, bool >=true) noexcept
 
template<class T , class UnaryFunction >
constexpr UnaryFunction for_each_const (T &data, UnaryFunction f, std::enable_if_t< is_cow_type< T >::value, bool >=true) noexcept
 
template<class InputIt , class UnaryFunction >
constexpr UnaryFunction for_each_fidelity (InputIt first, InputIt last, UnaryFunction f)
 Like jau::for_each(), see above. More...
 
template<class T , class UnaryFunction >
constexpr UnaryFunction for_each_fidelity (T &data, UnaryFunction f, std::enable_if_t< !is_cow_type< T >::value, bool >=true) noexcept
 See jau::for_each_fidelity() More...
 
template<class T , class UnaryFunction >
constexpr UnaryFunction for_each_fidelity (T &data, UnaryFunction f, std::enable_if_t< is_cow_type< T >::value, bool >=true) noexcept
 See jau::for_each_fidelity() More...
 
template<class InputArray , class UnaryFunction >
constexpr UnaryFunction for_each_idx (InputArray &array, UnaryFunction f)
 Custom for_each template, using indices instead of iterators, allowing container to be modified within lambda 'callback'. More...
 
template<class Mutex , class InputArray , class UnaryFunction >
constexpr UnaryFunction for_each_idx_mtx (Mutex &mtx, InputArray &array, UnaryFunction f)
 Custom for_each template, same as jau::for_each but using indices instead of iterators and a mutex. More...
 
template<class Mutex , class InputIt , class UnaryFunction >
constexpr UnaryFunction for_each_mtx (Mutex &mtx, InputIt first, InputIt last, UnaryFunction f)
 Custom for_each template, same as jau::for_each but using a mutex. More...
 
int fprintf_td (FILE *stream, const char *format,...) noexcept
 Convenient fprintf() invocation, prepending the environment::getElapsedMillisecond() timestamp. More...
 
mp::big_int_t gcd (const mp::big_int_t &a, const mp::big_int_t &b) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T > &&!std::is_unsigned_v< T >, bool > = true>
constexpr T gcd (T a, T b) noexcept
 Returns the greatest common divisor (GCD) of the two given integer values following Euclid's algorithm from Euclid's Elements ~300 BC, using the absolute positive value of given integers. More...
 
std::string get_backtrace (const bool skip_anon_frames, const jau::snsize_t max_frames=-1, const jau::snsize_t skip_frames=1) noexcept
 Returns a de-mangled backtrace string separated by newline excluding this function. More...
 
constexpr int8_t get_int8 (uint8_t const *buffer) noexcept
 
template<typename T >
constexpr T get_packed_value (const packed_t< T > *source, const lb_endian byte_order) noexcept
 Return packed_t::store after converting it to from either lb_endian::little or lb_endian::big depending on given byte_order to lb_endian::native. More...
 
std::string get_string (const uint8_t *buffer, nsize_t const buffer_len, nsize_t const max_len) noexcept
 Returns a C++ String taken from buffer with maximum length of min(max_len, max_len). More...
 
constexpr uint128dp_t get_uint128 (uint8_t const *buffer) noexcept
 See get_uint16() for reference. More...
 
constexpr uint128dp_t get_uint128 (uint8_t const *buffer, const lb_endian byte_order) noexcept
 See get_uint16() for reference. More...
 
constexpr uint16_t get_uint16 (uint8_t const *buffer) noexcept
 Returns a uint16_t value from the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
constexpr uint16_t get_uint16 (uint8_t const *buffer, const lb_endian byte_order) noexcept
 Returns a uint16_t value from the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
constexpr uint192dp_t get_uint192 (uint8_t const *buffer) noexcept
 See get_uint16() for reference. More...
 
constexpr uint192dp_t get_uint192 (uint8_t const *buffer, const lb_endian byte_order) noexcept
 See get_uint16() for reference. More...
 
constexpr uint256dp_t get_uint256 (uint8_t const *buffer) noexcept
 See get_uint16() for reference. More...
 
constexpr uint256dp_t get_uint256 (uint8_t const *buffer, const lb_endian byte_order) noexcept
 See get_uint16() for reference. More...
 
constexpr uint32_t get_uint32 (uint8_t const *buffer) noexcept
 See get_uint16() for reference. More...
 
constexpr uint32_t get_uint32 (uint8_t const *buffer, const lb_endian byte_order) noexcept
 See get_uint16() for reference. More...
 
constexpr uint64_t get_uint64 (uint8_t const *buffer) noexcept
 See get_uint16() for reference. More...
 
constexpr uint64_t get_uint64 (uint8_t const *buffer, const lb_endian byte_order) noexcept
 See get_uint16() for reference. More...
 
constexpr uint8_t get_uint8 (uint8_t const *buffer) noexcept
 
uuid128_t get_uuid128 (uint8_t const *buffer) noexcept
 
uuid128_t get_uuid128 (uint8_t const *buffer, lb_endian const le_or_be) noexcept
 
uuid16_t get_uuid16 (uint8_t const *buffer) noexcept
 
uuid16_t get_uuid16 (uint8_t const *buffer, lb_endian const le_or_be) noexcept
 
uuid32_t get_uuid32 (uint8_t const *buffer) noexcept
 
uuid32_t get_uuid32 (uint8_t const *buffer, lb_endian const le_or_be) noexcept
 
template<typename T >
constexpr std::enable_if_t< std::is_standard_layout_v< T >, T > get_value (uint8_t const *buffer) noexcept
 Returns a T value from the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
template<typename T >
constexpr std::enable_if_t< std::is_standard_layout_v< T >, T > get_value (uint8_t const *buffer, const lb_endian byte_order) noexcept
 Returns a T value from the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
uint64_t getCurrentMilliseconds () noexcept
 Returns current monotonic time in milliseconds. More...
 
fraction_timespec getMonotonicTime () noexcept
 Returns current monotonic time since Unix Epoch 00:00:00 UTC on 1970-01-01. More...
 
uint64_t getWallClockSeconds () noexcept
 Returns current wall-clock system time of day in seconds since Unix Epoch 00:00:00 UTC on 1 January 1970. More...
 
fraction_timespec getWallClockTime () noexcept
 Returns current wall-clock real-time since Unix Epoch 00:00:00 UTC on 1970-01-01. More...
 
size_t hexStringBytes (std::vector< uint8_t > &out, const std::string &hexstr, const bool lsbFirst, const bool checkLeading0x) noexcept
 Converts a given hexadecimal string representation into a byte vector. More...
 
size_t hexStringBytes (std::vector< uint8_t > &out, const uint8_t hexstr[], const size_t hexstr_len, const bool lsbFirst, const bool checkLeading0x) noexcept
 See hexStringBytes() More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true>
constexpr nsize_t high_bit (T x)
 Return the index of the highest set bit w/ branching (loop) in O(n), actually O(n/2). More...
 
template<class T >
bool in_range (const T &a, const T &b, const T &delta)
 Returns true, if both integer point values differ less than the given delta. More...
 
void INFO_PRINT (const char *format,...) noexcept
 Use for unconditional informal messages, prefix '[elapsed_time] Info: '. More...
 
template<typename T , std::enable_if_t< std::is_arithmetic_v< T > &&!std::is_unsigned_v< T >, bool > = true>
constexpr T invert_sign (const T x) noexcept
 Safely inverts the sign of an arithmetic number w/ branching in O(1) More...
 
constexpr bool is_big_endian () noexcept
 Evaluates true if platform is running in big endian mode, i.e. More...
 
constexpr bool is_builtin_bit_cast_available () noexcept
 Query whether __builtin_bit_cast(Dest_type, arg) is available, using jau::has_builtin_bit_cast. More...
 
constexpr bool is_builtin_int128_available () noexcept
 
constexpr bool is_defined_endian (const endian &v) noexcept
 Evaluates true if the given endian is defined, i.e. More...
 
constexpr bool is_little_endian () noexcept
 Evaluates true if platform is running in little endian mode, i.e. More...
 
constexpr bool is_little_endian (const endian byte_order) noexcept
 Returns true if given byte_order equals endian::little, otherwise false. More...
 
constexpr bool is_little_endian (const lb_endian byte_order) noexcept
 Returns true if given byte_order equals lb_endian::little, otherwise false. More...
 
constexpr bool is_little_or_big_endian () noexcept
 Evaluates true if platform is running in little or big endian mode, i.e. More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T >, bool > = true>
constexpr bool is_power_of_2 (const T x) noexcept
 Power of 2 test (w/o branching ?) in O(1) More...
 
template<typename _Dummy = void>
constexpr bool is_rtti_available ()
 constexpr template function returning true if RTTI is available, otherwise false. More...
 
constexpr bool isTypeTraitBitSet (const TypeTraitGroup mask, const TypeTraitGroup bit) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr bool lcm_overflow (const T a, const T b, T &result) noexcept
 Integer overflow aware calculation of least common multiple (LCM) following Euclid's algorithm from Euclid's Elements ~300 BC. More...
 
constexpr EUI48 le_to_cpu (EUI48 const &l) noexcept
 
constexpr uint128dp_t le_to_cpu (uint128dp_t const &l) noexcept
 
constexpr uint16_t le_to_cpu (uint16_t const l) noexcept
 
constexpr uint192dp_t le_to_cpu (uint192dp_t const &l) noexcept
 
constexpr uint256dp_t le_to_cpu (uint256dp_t const &l) noexcept
 
constexpr uint32_t le_to_cpu (uint32_t const l) noexcept
 
constexpr uint64_t le_to_cpu (uint64_t const &l) noexcept
 
template<class T >
std::enable_if<!std::numeric_limits< T >::is_integer, bool >::type machine_equal (const T &a, const T &b, int ulp=1, const T &epsilon=std::numeric_limits< T >::epsilon())
 Returns true, if both floating point values are equal in the sense that their potential difference is less or equal epsilon * ulp. More...
 
template<class T >
std::enable_if<!std::numeric_limits< T >::is_integer, T >::type machineEpsilon ()
 Calculates the smallest floating point value approximation the given type T can represent, the machine epsilon of T. More...
 
template<typename First , typename... Next>
constexpr cow_darray< First > make_cow_darray (First &&arg1)
 Complement constructor for cow_darray<T> instance, move semantics initializer for one argument. More...
 
template<typename First , typename... Next, std::enable_if_t< std::conjunction_v< std::is_same< First, Next >... >, bool > = true>
constexpr cow_darray< First > make_cow_darray (First &&arg1, Next &&... argsN)
 Construct a cow_darray<T> instance, initialized by move semantics from the variadic (template pack) argument list. More...
 
template<typename T >
jau::type_info make_ctti () noexcept
 Constructs a jau::type_info instance based on given type T using template Compile Time Type Information (CTTI) only. More...
 
template<typename R , typename L , typename... A>
jau::type_info make_ctti () noexcept
 Constructs a jau::type_info instance based on given function types R(*L)(A...) using template Compile Time Type Information (CTTI) only via RTTI's `typeid(L) if available or jau::ctti_name<R, L, A...>() otherwise. More...
 
template<typename First , typename... Next>
constexpr darray< First > make_darray (First &&arg1)
 Complement constructor for darray<T> instance, move semantics initializer for one argument. More...
 
template<typename First , typename... Next, std::enable_if_t< std::conjunction_v< std::is_same< First, Next >... >, bool > = true>
constexpr darray< First > make_darray (First &&arg1, Next &&... argsN)
 Construct a darray<T> instance, initialized by move semantics from the variadic (template pack) argument list. More...
 
template<typename int_type >
constexpr const fraction< int_type > & max (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 Return the maximum of the two given fractions. More...
 
constexpr const fraction_timespecmax (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 Return the maximum of the two given fraction_timespec. More...
 
const mp::big_int_tmax (const mp::big_int_t &x, const mp::big_int_t &y) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr T max (const T x, const T y) noexcept
 Returns the maximum of two integrals (w/ branching) in O(1) More...
 
mp::big_int_tmax (mp::big_int_t &x, mp::big_int_t &y) noexcept
 
uint128dp_t merge_uint128 (uint16_t const uuid16, uint128dp_t const &base_uuid, nsize_t const uuid16_le_octet_index)
 Merge the given 'uuid16' into a 'base_uuid' copy at the given little endian 'uuid16_le_octet_index' position. More...
 
uint128dp_t merge_uint128 (uint32_t const uuid32, uint128dp_t const &base_uuid, nsize_t const uuid32_le_octet_index)
 Merge the given 'uuid32' into a 'base_uuid' copy at the given little endian 'uuid32_le_octet_index' position. More...
 
template<typename int_type >
constexpr const fraction< int_type > & min (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 Return the minimum of the two given fractions. More...
 
constexpr const fraction_timespecmin (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 Return the minimum of the two given fraction_timespec. More...
 
const mp::big_int_tmin (const mp::big_int_t &x, const mp::big_int_t &y) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr T min (const T x, const T y) noexcept
 Returns the minimum of two integrals (w/ branching) in O(1) More...
 
mp::big_int_tmin (mp::big_int_t &x, mp::big_int_t &y) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr bool mul_overflow (const T a, const T b, T &res) noexcept
 Integer overflow aware multiplication returning true if overflow occurred, otherwise false having the result stored in res. More...
 
constexpr uint32_t number (const func::target_type rhs) noexcept
 
constexpr uint8_t number (const TypeTraitGroup rhs) noexcept
 
template<class T1 , class T2 >
bool operator!= (const callocator< T1 > &lhs, const callocator< T2 > &rhs) noexcept
 
template<class T1 , class T2 >
bool operator!= (const callocator_sec< T1 > &lhs, const callocator_sec< T2 > &rhs) noexcept
 
template<class T1 , class T2 >
bool operator!= (const counting_allocator< T1 > &lhs, const counting_allocator< T2 > &rhs) noexcept
 
template<class T1 , class T2 >
bool operator!= (const counting_callocator< T1 > &lhs, const counting_callocator< T2 > &rhs) noexcept
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator!= (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator!= (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator!= (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Value_type , typename Alloc_type >
bool operator!= (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator!= (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
 
bool operator!= (const EUI48 &lhs, const EUI48 &rhs) noexcept
 
bool operator!= (const EUI48Sub &lhs, const EUI48Sub &rhs) noexcept
 
template<typename int_type >
constexpr bool operator!= (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 
constexpr bool operator!= (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 
template<class R , class... A>
bool operator!= (const function< R(A...)> &lhs, std::nullptr_t) noexcept
 Unequal operator of jau::function<R(A...)> with a right-hand-side nullptr. More...
 
template<typename Rl , typename... Al, template< typename... > typename Fl = function, typename Rr , typename... Ar, template< typename... > typename Fr = function>
bool operator!= (const function< Rl(Al...)> &lhs, const function< Rr(Ar...)> &rhs) noexcept
 Unequal operator using two jau::function<R(A...)> types for both arguments. More...
 
constexpr bool operator!= (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
template<class R , class... A>
bool operator!= (std::nullptr_t, const function< R(A...)> &rhs) noexcept
 Unequal operator of jau::function<R(A...)> with a left-hand-side nullptr. More...
 
constexpr TypeTraitGroup operator& (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
template<typename int_type >
constexpr fraction< int_type > operator* (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 Returns product of two fraction. More...
 
template<typename int_type >
constexpr fraction< int_type > operator* (const fraction< int_type > &lhs, const int_type &rhs) noexcept
 Returns multiplication of fraction with scalar. More...
 
template<typename int_type >
constexpr fraction< int_type > operator* (const int_type &lhs, const fraction< int_type > &rhs) noexcept
 Returns multiplication of fraction with scalar. More...
 
template<typename int_type >
constexpr fraction< int_type > operator+ (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 Returns sum of two fraction. More...
 
constexpr fraction_timespec operator+ (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 Returns sum of two fraction_timespec. More...
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr Storage_type::difference_type operator- (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr Storage_type::difference_type operator- (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename int_type >
constexpr fraction< int_type > operator- (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 Returns difference of two fraction. More...
 
constexpr fraction_timespec operator- (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 Returns difference of two fraction_timespec. More...
 
template<typename int_type >
constexpr fraction< int_type > operator/ (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 Returns division of two fraction. More...
 
template<typename int_type >
constexpr fraction< int_type > operator/ (const fraction< int_type > &lhs, const int_type &rhs) noexcept
 Returns division of fraction with scalar. More...
 
template<typename int_type >
constexpr fraction< int_type > operator/ (const int_type &lhs, const fraction< int_type > &rhs) noexcept
 Returns division of fraction with scalar. More...
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator< (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator< (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator< (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Value_type , typename Alloc_type >
bool operator< (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator< (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename int_type >
constexpr bool operator< (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 
constexpr bool operator< (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 
template<typename Value_type , typename Size_type , typename Alloc_type >
std::ostream & operator<< (std::ostream &out, const cow_darray< Value_type, Size_type, Alloc_type > &c)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
std::ostream & operator<< (std::ostream &out, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &c)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
std::ostream & operator<< (std::ostream &out, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &c)
 
template<typename Value_type , typename Alloc_type >
std::ostream & operator<< (std::ostream &out, const cow_vector< Value_type, Alloc_type > &c)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
std::ostream & operator<< (std::ostream &out, const darray< Value_type, Size_type, Alloc_type > &c)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator<= (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator<= (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator<= (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Value_type , typename Alloc_type >
bool operator<= (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator<= (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename int_type >
constexpr bool operator<= (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 
constexpr bool operator<= (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 
template<class T1 , class T2 >
bool operator== (const callocator< T1 > &lhs, const callocator< T2 > &rhs) noexcept
 
template<class T1 , class T2 >
bool operator== (const callocator_sec< T1 > &lhs, const callocator_sec< T2 > &rhs) noexcept
 
template<class T1 , class T2 >
bool operator== (const counting_allocator< T1 > &lhs, const counting_allocator< T2 > &rhs) noexcept
 
template<class T1 , class T2 >
bool operator== (const counting_callocator< T1 > &lhs, const counting_callocator< T2 > &rhs) noexcept
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator== (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator== (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator== (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Value_type , typename Alloc_type >
bool operator== (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator== (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
 
bool operator== (const EUI48 &lhs, const EUI48 &rhs) noexcept
 
bool operator== (const EUI48Sub &lhs, const EUI48Sub &rhs) noexcept
 
template<typename int_type >
constexpr bool operator== (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 
constexpr bool operator== (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 
template<class R , class... A>
bool operator== (const function< R(A...)> &lhs, std::nullptr_t) noexcept
 Equal operator of jau::function<R(A...)> with a right-hand-side nullptr. More...
 
template<typename Rl , typename... Al, template< typename... > class Fl = function, typename Rr , typename... Ar, template< typename... > class Fr = function, std::enable_if_t< !std::is_same_v< Fl< Rl(Al...)>, Fr< Rr(Ar...)> >, bool > = true>
bool operator== (const function< Rl(Al...)> &lhs, const function< Rr(Ar...)> &rhs) noexcept
 Equal operator using different jau::function<R(A...)> return and argument types for both arguments, always returns false. More...
 
constexpr bool operator== (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
template<class R , class... A>
bool operator== (std::nullptr_t, const function< R(A...)> &rhs) noexcept
 Equal operator of jau::function<R(A...)> with a left-hand-side nullptr. More...
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator> (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator> (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator> (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Value_type , typename Alloc_type >
bool operator> (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator> (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename int_type >
constexpr bool operator> (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 
constexpr bool operator> (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator>= (const cow_darray< Value_type, Size_type, Alloc_type > &rhs, const cow_darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator>= (const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Storage_type , typename Storage_ref_type , typename CoW_container >
constexpr bool operator>= (const cow_rw_iterator< Storage_type, Storage_ref_type, CoW_container > &lhs, const cow_ro_iterator< Storage_type, Storage_ref_type, CoW_container > &rhs) noexcept
 
template<typename Value_type , typename Alloc_type >
bool operator>= (const cow_vector< Value_type, Alloc_type > &rhs, const cow_vector< Value_type, Alloc_type > &lhs)
 
template<typename Value_type , typename Size_type , typename Alloc_type >
bool operator>= (const darray< Value_type, Size_type, Alloc_type > &rhs, const darray< Value_type, Size_type, Alloc_type > &lhs)
 
template<typename int_type >
constexpr bool operator>= (const fraction< int_type > &lhs, const fraction< int_type > &rhs) noexcept
 
constexpr bool operator>= (const fraction_timespec &lhs, const fraction_timespec &rhs) noexcept
 
constexpr TypeTraitGroup operator^ (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
constexpr TypeTraitGroup operator| (const TypeTraitGroup lhs, const TypeTraitGroup rhs) noexcept
 
void PLAIN_PRINT (const bool printPrefix, const char *format,...) noexcept
 Use for unconditional plain messages, prefix '[elapsed_time] ' if printPrefix == true. More...
 
template<class Dest , class Source >
constexpr std::enable_if_t< sizeof(Dest)==sizeof(Source) &&std::is_pointer_v< Source > &&std::is_pointer_v< Dest >, Dest > pointer_cast (const Source &src) noexcept
 A constexpr pointer cast implementation for C++17, inspired by C++20 bit_cast<>(arg). More...
 
mp::big_int_t pow (mp::big_int_t b, mp::big_int_t e)
 
void print_backtrace (const bool skip_anon_frames, const jau::snsize_t max_frames=-1, const jau::snsize_t skip_frames=2) noexcept
 Prints the de-mangled backtrace string separated by newline excluding this function to stderr, using get_backtrace(). More...
 
template<class List >
void printSharedPtrList (const std::string &prefix, List &list) noexcept
 
constexpr void put_uint128 (uint8_t *buffer, const uint128dp_t &v) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint128 (uint8_t *buffer, const uint128dp_t &v, const lb_endian byte_order) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint16 (uint8_t *buffer, const uint16_t v) noexcept
 Put the given uint16_t value into the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
constexpr void put_uint16 (uint8_t *buffer, const uint16_t v, const lb_endian byte_order) noexcept
 Put the given uint16_t value into the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
constexpr void put_uint192 (uint8_t *buffer, const uint192dp_t &v) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint192 (uint8_t *buffer, const uint192dp_t &v, const lb_endian byte_order) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint256 (uint8_t *buffer, const uint256dp_t &v) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint256 (uint8_t *buffer, const uint256dp_t &v, const lb_endian byte_order) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint32 (uint8_t *buffer, const uint32_t v) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint32 (uint8_t *buffer, const uint32_t v, const lb_endian byte_order) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint64 (uint8_t *buffer, const uint64_t &v) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint64 (uint8_t *buffer, const uint64_t &v, const lb_endian byte_order) noexcept
 See put_uint16() for reference. More...
 
constexpr void put_uint8 (uint8_t *buffer, const uint8_t v) noexcept
 
template<typename T >
constexpr std::enable_if_t< std::is_standard_layout_v< T >, void > put_value (uint8_t *buffer, const T &v) noexcept
 Put the given T value into the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
template<typename T >
constexpr std::enable_if_t< std::is_standard_layout_v< T >, void > put_value (uint8_t *buffer, const T &v, const lb_endian byte_order) noexcept
 Put the given T value into the given byte address using packed_t to resolve a potential memory alignment issue free of costs. More...
 
template<class ForwardIt , class UnaryPredicate >
ForwardIt remove_if (ForwardIt first, ForwardIt last, UnaryPredicate p)
 Identical to C++20 std::remove_if() of algorithm More...
 
template<typename T , typename U , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T > &&std::is_integral_v< U > &&std::is_unsigned_v< U >, bool > = true>
constexpr T round_down (T n, U align_to)
 Round down w/ branching in O(1) More...
 
constexpr uint32_t round_to_power_of_2 (const uint32_t n)
 If the given n is not is_power_of_2() return next_power_of_2(), otherwise return n unchanged. More...
 
template<typename T , typename U , std::enable_if_t< std::is_integral_v< T > &&std::is_unsigned_v< T > &&std::is_integral_v< U > &&std::is_unsigned_v< U >, bool > = true>
constexpr T round_up (const T n, const U align_to)
 Round up w/ branching in O(1) More...
 
void set_bit_uint32 (const uint8_t nr, uint32_t &mask)
 
void set_bit_uint64 (const uint8_t nr, uint64_t &mask)
 
template<typename int_type >
constexpr snsize_t sign (const fraction< int_type > &rhs) noexcept
 Returns the value of the sign function applied to numerator. More...
 
constexpr snsize_t sign (const fraction_timespec &rhs) noexcept
 Returns the value of the sign function applied to tv_sec. More...
 
template<typename T , std::enable_if_t< std::is_arithmetic_v< T >, bool > = true>
constexpr int sign (const T x) noexcept
 Returns the value of the sign function (w/o branching ?) in O(1). More...
 
void sleep_for (const fraction_i64 &relative_time, const bool monotonic=true) noexcept
 sleep_for causes the current thread to block until a specific amount of time has passed. More...
 
void sleep_for (const fraction_timespec &relative_time, const bool monotonic=true) noexcept
 sleep_for causes the current thread to block until a specific amount of time has passed. More...
 
void sleep_until (const fraction_timespec &absolute_time, const bool monotonic=true) noexcept
 sleep_until causes the current thread to block until the specific time is reached. More...
 
template<typename T , std::enable_if_t< std::is_integral_v< T >, bool > = true>
constexpr bool sub_overflow (const T a, const T b, T &res) noexcept
 Integer overflow aware subtraction returning true if overflow occurred, otherwise false having the result stored in res. More...
 
template<typename Value_type , typename Size_type , typename Alloc_type >
void swap (cow_darray< Value_type, Size_type, Alloc_type > &rhs, cow_darray< Value_type, Size_type, Alloc_type > &lhs) noexcept
 
template<typename Value_type , typename Alloc_type >
void swap (cow_vector< Value_type, Alloc_type > &rhs, cow_vector< Value_type, Alloc_type > &lhs) noexcept
 
template<typename Value_type , typename Size_type , typename Alloc_type >
void swap (darray< Value_type, Size_type, Alloc_type > &rhs, darray< Value_type, Size_type, Alloc_type > &lhs) noexcept
 
uint32_t test_bit_uint32 (const uint8_t nr, const uint32_t mask)
 
uint64_t test_bit_uint64 (const uint8_t nr, const uint64_t mask)
 
template<class value_type , std::enable_if_t< std::is_integral_v< value_type >, bool > = true>
std::string to_decstring (const value_type &v, const char separator=',', const nsize_t width=0) noexcept
 Produce a decimal string representation of an integral integer value. More...
 
constexpr endian to_endian (const lb_endian v) noexcept
 
bool to_fraction_i64 (fraction_i64 &result, const std::string &value, const fraction_i64 &min_allowed, const fraction_i64 &max_allowed) noexcept
 Stores the fraction_i64 value of the given string value in format <num>/<denom>, which may contain whitespace. More...
 
template<class value_type , std::enable_if_t< std::is_pointer_v< value_type >, bool > = true>
std::string to_hexstring (value_type const &v) noexcept
 Produce a lower-case hexadecimal string representation of the given pointer. More...
 
bool to_integer (long long &result, const char *str, size_t str_len, const char limiter='\0', const char *limiter_pos=nullptr)
 
bool to_integer (long long &result, const std::string &str, const char limiter='\0', const char *limiter_pos=nullptr)
 
constexpr lb_endian to_lb_endian (const endian v) noexcept
 
std::string to_string (const endian &v) noexcept
 Return std::string representation of the given endian. More...
 
std::string to_string (const EUI48 &a) noexcept
 
std::string to_string (const EUI48Sub &a) noexcept
 
template<typename int_type >
std::string to_string (const fraction< int_type > &v) noexcept
 
std::string to_string (const fraction_timespec &v) noexcept
 
std::string to_string (const func::target_type v) noexcept
 
std::string to_string (const lb_endian &v) noexcept
 Return std::string representation of the given lb_endian. More...
 
std::string to_string (const math_error_t v) noexcept
 Returns std::string representation of math_error_t. More...
 
template<typename _Tp , std::memory_order _MO>
std::string to_string (const ordered_atomic< _Tp, _MO > &ref)
 
std::string to_string (const uuid_t::TypeSize v) noexcept
 
template<class value_type , std::enable_if_t< std::is_integral_v< value_type >||std::is_floating_point_v< value_type >, bool > = true>
std::string to_string (const value_type &ref)
 
template<typename T >
std::string to_string (std::vector< T > const &list, const std::string &delim)
 
std::string trimCopy (const std::string &s) noexcept
 trim copy More...
 
void trimInPlace (std::string &s) noexcept
 trim in place More...
 
template<typename T >
const char * type_name () noexcept
 Returns the type name of given type T using template Compile Time Type Information (CTTI) only via RTTI's typeid(T).name() if available or jau::ctti_name<T>() otherwise. More...
 
template<typename R , typename L , typename... A>
const char * type_name () noexcept
 Returns the type name of given function types R(*L)(A...) using template Compile Time Type Information (CTTI) only via RTTI's typeid(L).name() if available or jau::ctti_name<R, L, A...>() otherwise. More...
 
std::cv_status wait_for (std::condition_variable &cv, std::unique_lock< std::mutex > &lock, const fraction_i64 &relative_time, const bool monotonic=true) noexcept
 wait_for causes the current thread to block until the condition variable is notified, a specific amount of time has passed, or a spurious wakeup occurs. More...
 
std::cv_status wait_for (std::condition_variable &cv, std::unique_lock< std::mutex > &lock, const fraction_timespec &relative_time, const bool monotonic=true) noexcept
 wait_for causes the current thread to block until the condition variable is notified, a specific amount of time has passed, or a spurious wakeup occurs. More...
 
std::cv_status wait_until (std::condition_variable &cv, std::unique_lock< std::mutex > &lock, const fraction_timespec &absolute_time, const bool monotonic=true) noexcept
 wait_until causes the current thread to block until the condition variable is notified, a specific time is reached, or a spurious wakeup occurs. More...
 
void WARN_PRINT_impl (const char *func, const char *file, const int line, const char *format,...) noexcept
 
void WARN_PRINTv (const char *func, const char *file, const int line, const char *format, va_list args) noexcept
 Use for unconditional warning messages, prefix '[elapsed_time] Warning @ file:line func: '. More...
 
void WORDY_PRINT_impl (const char *format,...) noexcept
 

Variables

uuid128_t BT_BASE_UUID
 Bluetooth UUID https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/ More...
 
template<typename Dummy_type >
constexpr bool has_builtin_bit_cast_v = has_builtin_bit_cast<Dummy_type>::value
 Value access of has_builtin_bit_cast type trait for convenience . More...
 
template<typename Dummy_type >
constexpr bool has_endian_big_v = has_endian_big<Dummy_type>::value
 Value access of big-endian type trait for convenience . More...
 
template<typename Dummy_type >
constexpr bool has_endian_little_v = has_endian_little<Dummy_type>::value
 Value access of little-endian type trait for convenience . More...
 
template<typename _Tp >
constexpr bool has_member_of_pointer_v = has_member_of_pointer<_Tp>::value
 
template<typename _Tp >
constexpr bool has_to_string_v = has_to_string<_Tp>::value
 
template<typename _Tp >
constexpr bool has_toString_v = has_toString<_Tp>::value
 
template<typename T >
constexpr bool is_container_memmove_compliant_v = is_container_memmove_compliant<T>::value
 
template<typename T >
constexpr bool is_enforcing_secmem_v = is_enforcing_secmem<T>::value
 
template<typename _Dummy >
constexpr bool is_rtti_available_v = is_rtti_available_t<_Dummy>::value
 Template type trait helper evaluating true if RTTI is available, otherwise false. More...
 
const char * VERSION
 
const char * VERSION_API
 
const char * VERSION_SHORT
 

Detailed Description

__pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros.

Function Documentation

◆ get_backtrace()

std::string jau::get_backtrace ( const bool  skip_anon_frames,
const jau::snsize_t  max_frames = -1,
const jau::snsize_t  skip_frames = 1 
)
noexcept

Returns a de-mangled backtrace string separated by newline excluding this function.

Returns one line per stack frame, each with

  • stack frame number
  • demangled function name + offset (sp)
  • the instruction pointer (pc)
  • the stack pointer (sp)
Parameters
skip_anon_framesif true, skip all frames w/o proc-name
max_framesnumber of stack frames to be printed or -1 for unlimited, defaults to -1
skip_framesnumber of stack frames to skip, default is one frame for this function.
Returns
the de-mangled backtrace, separated by newline

Definition at line 94 of file debug.cpp.

Here is the caller graph for this function:

◆ print_backtrace()

void jau::print_backtrace ( const bool  skip_anon_frames,
const jau::snsize_t  max_frames = -1,
const jau::snsize_t  skip_frames = 2 
)
noexcept

Prints the de-mangled backtrace string separated by newline excluding this function to stderr, using get_backtrace().

Parameters
skip_anon_framesif true, skip all frames w/o proc-name
max_framesnumber of stack frames to be printed or -1 for unlimited, defaults to -1
skip_framesnumber of stack frames to skip, default is two frames for this function and for get_backtrace().
See also
get_backtrace()

Definition at line 173 of file debug.cpp.

Here is the caller graph for this function:

◆ getCurrentMilliseconds()

uint64_t jau::getCurrentMilliseconds ( )
noexcept

Returns current monotonic time in milliseconds.

Definition at line 63 of file basic_types.cpp.

Here is the caller graph for this function:

◆ getWallClockSeconds()

uint64_t jau::getWallClockSeconds ( )
noexcept

Returns current wall-clock system time of day in seconds since Unix Epoch 00:00:00 UTC on 1 January 1970.

Definition at line 70 of file basic_types.cpp.

◆ operator==() [1/4]

template<class T1 , class T2 >
bool jau::operator== ( const callocator< T1 > &  lhs,
const callocator< T2 > &  rhs 
)
noexcept

Definition at line 150 of file callocator.hpp.

Here is the caller graph for this function:

◆ operator!=() [1/4]

template<class T1 , class T2 >
bool jau::operator!= ( const callocator< T1 > &  lhs,
const callocator< T2 > &  rhs 
)
noexcept

Definition at line 163 of file callocator.hpp.

◆ operator==() [2/4]

template<class T1 , class T2 >
bool jau::operator== ( const callocator_sec< T1 > &  lhs,
const callocator_sec< T2 > &  rhs 
)
noexcept

Definition at line 149 of file callocator_sec.hpp.

◆ operator!=() [2/4]

template<class T1 , class T2 >
bool jau::operator!= ( const callocator_sec< T1 > &  lhs,
const callocator_sec< T2 > &  rhs 
)
noexcept

Definition at line 162 of file callocator_sec.hpp.

◆ operator==() [3/4]

template<class T1 , class T2 >
bool jau::operator== ( const counting_allocator< T1 > &  lhs,
const counting_allocator< T2 > &  rhs 
)
noexcept

Definition at line 212 of file counting_allocator.hpp.

◆ operator!=() [3/4]

template<class T1 , class T2 >
bool jau::operator!= ( const counting_allocator< T1 > &  lhs,
const counting_allocator< T2 > &  rhs 
)
noexcept

Definition at line 225 of file counting_allocator.hpp.

◆ operator==() [4/4]

template<class T1 , class T2 >
bool jau::operator== ( const counting_callocator< T1 > &  lhs,
const counting_callocator< T2 > &  rhs 
)
noexcept

Definition at line 227 of file counting_callocator.hpp.

◆ operator!=() [4/4]

template<class T1 , class T2 >
bool jau::operator!= ( const counting_callocator< T1 > &  lhs,
const counting_callocator< T2 > &  rhs 
)
noexcept

Definition at line 240 of file counting_callocator.hpp.

◆ DBG_PRINT_impl()

void jau::DBG_PRINT_impl ( const char *  format,
  ... 
)
noexcept

Definition at line 178 of file debug.cpp.

◆ WORDY_PRINT_impl()

void jau::WORDY_PRINT_impl ( const char *  format,
  ... 
)
noexcept

Definition at line 188 of file debug.cpp.

◆ ABORT_impl()

void jau::ABORT_impl ( const char *  func,
const char *  file,
const int  line,
const char *  format,
  ... 
)
noexcept

Use for unconditional ::abort() call with given messages, prefix '[elapsed_time] ABORT @ file:line func: '.

Function also appends last errno and strerror(errno).

Definition at line 198 of file debug.cpp.

◆ ERR_PRINTv()

void jau::ERR_PRINTv ( const char *  func,
const char *  file,
const int  line,
const char *  format,
va_list  args 
)
noexcept

Use for unconditional error messages, prefix '[elapsed_time] Error @ file:line func: '.

Function also appends last errno and strerror(errno).

Definition at line 210 of file debug.cpp.

◆ ERR_PRINT_impl()

void jau::ERR_PRINT_impl ( const char *  prefix,
const bool  backtrace,
const char *  func,
const char *  file,
const int  line,
const char *  format,
  ... 
)
noexcept

Definition at line 218 of file debug.cpp.

◆ WARN_PRINTv()

void jau::WARN_PRINTv ( const char *  func,
const char *  file,
const int  line,
const char *  format,
va_list  args 
)
noexcept

Use for unconditional warning messages, prefix '[elapsed_time] Warning @ file:line func: '.

Definition at line 231 of file debug.cpp.

◆ WARN_PRINT_impl()

void jau::WARN_PRINT_impl ( const char *  func,
const char *  file,
const int  line,
const char *  format,
  ... 
)
noexcept

Definition at line 238 of file debug.cpp.

◆ INFO_PRINT()

void jau::INFO_PRINT ( const char *  format,
  ... 
)
noexcept

Use for unconditional informal messages, prefix '[elapsed_time] Info: '.

Definition at line 248 of file debug.cpp.

Here is the caller graph for this function:

◆ PLAIN_PRINT()

void jau::PLAIN_PRINT ( const bool  printPrefix,
const char *  format,
  ... 
)
noexcept

Use for unconditional plain messages, prefix '[elapsed_time] ' if printPrefix == true.

Definition at line 258 of file debug.cpp.

Here is the caller graph for this function:

◆ fprintf_td()

int jau::fprintf_td ( FILE *  stream,
const char *  format,
  ... 
)
noexcept

Convenient fprintf() invocation, prepending the environment::getElapsedMillisecond() timestamp.

Parameters
streamthe output stream
formatthe format
argsthe optional arguments

Definition at line 270 of file debug.cpp.

Here is the caller graph for this function:

◆ COND_PRINT_impl()

void jau::COND_PRINT_impl ( const char *  format,
  ... 
)
noexcept

Definition at line 279 of file debug.cpp.

◆ printSharedPtrList()

template<class List >
void jau::printSharedPtrList ( const std::string &  prefix,
List &  list 
)
inlinenoexcept

Definition at line 146 of file debug.hpp.

Variable Documentation

◆ VERSION

const char* jau::VERSION
extern

◆ VERSION_SHORT

const char* jau::VERSION_SHORT
extern

◆ VERSION_API

const char* jau::VERSION_API
extern