C++ Library Extensions 2022.12.09
To help learn modern C++ programming
tpf_safe_type.hpp File Reference

This file implements safe arithmetic. More...

#include <iostream>
#include <type_traits>
#include <limits>
#include <string>
#include <sstream>
#include <iomanip>
#include <cstdlib>
#include <tpf_types.hpp>
Include dependency graph for tpf_safe_type.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  tpf
 Includes subnamespace conversion.
 
namespace  tpf::safe_type
 Defines safe type operation.
 
namespace  tpf::safe_type::hidden
 

Macros

#define NOMINMAX
 

Typedefs

template<typename T , typename = types::enable_if_integral_t<T>>
using tpf::safe_type::hidden::unsigned_integral_t = types::make_unsigned_integral_t< T >
 
template<typename T , typename = types::enable_if_integral_t<T>>
using tpf::safe_type::hidden::signed_integral_t = types::make_signed_integral_t< T >
 
template<typename S , typename T >
using tpf::safe_type::hidden::common_t = types::common_type_t< S, T >
 
template<typename S , typename T , typename = types::enable_if_integral_t<S>, typename = types::enable_if_integral_t<T>>
using tpf::safe_type::hidden::signed_common_t = signed_integral_t< common_t< S, T > >
 
template<typename S , typename T , typename = types::enable_if_integral_t<S>, typename = types::enable_if_integral_t<T>>
using tpf::safe_type::hidden::unsigned_common_t = unsigned_integral_t< common_t< S, T > >
 

Functions

template<typename Type >
types::enable_if_integral_t< Type, int > tpf::safe_type::count_set_bits (Type bits)
 Counts set bits. More...
 
template<typename Type >
types::enable_if_integral_t< Type, std::string > tpf::safe_type::to_bits (Type bits)
 Returns binary bit pattern. More...
 
template<typename Type >
types::enable_if_integral_t< Type, std::string > tpf::safe_type::to_hex (Type v)
 Returns hexidecimal representation. More...
 
template<typename Type >
types::enable_if_integral_t< Type, std::string > tpf::safe_type::to_dec (Type v)
 Returns decimal representation. More...
 
template<typename Type >
types::enable_if_integral_t< Type, int > tpf::safe_type::field_width (Type v)
 Returns' field width. More...
 
template<typename Type >
types::enable_if_integral_t< Type, int > tpf::safe_type::numeric_width ()
 Return's maximum numeric field width. More...
 
template<typename Type >
types::enable_if_integral_t< Type, std::string > tpf::safe_type::to_dec_width (Type v)
 Returns decimal field width. More...
 
template<typename Type >
types::enable_if_integral_t< Type, std::string > tpf::safe_type::numeric_base (Type v)
 Displays how integral types are represented. More...
 
template<typename Type >
types::enable_if_integral_t< Type, std::string > tpf::safe_type::numeric_type_info (Type)
 Displays integral type's numerical information. More...
 
template<typename = void>
void tpf::safe_type::integral_type_info ()
 Displays all integral types' representation. More...
 
template<typename Type >
types::enable_if_integral_t< Type, void > tpf::safe_type::twos_complement (Type c)
 Displays Twos complement. More...
 
template<typename Type >
types::enable_if_signed_integral_t< Type > tpf::safe_type::safe_add (Type a, Type b)
 Safe addition of the signed integral types. More...
 
template<typename Type >
types::enable_if_signed_integral_t< Type > tpf::safe_type::safe_sub (Type a, Type b)
 Safe subtraction of signed integral types. More...
 
template<typename Type >
types::enable_if_unsigned_integral_t< Type > tpf::safe_type::safe_add (Type a, Type b)
 Safe addition of the unsigned integral types. More...
 
template<typename Type >
types::enable_if_unsigned_integral_t< Type > tpf::safe_type::safe_sub (Type a, Type b)
 Safe subtraction of unsigned integral types. More...
 
template<typename Type >
types::enable_if_integral_t< Type > tpf::safe_type::safe_mul (Type a, Type b)
 Safe multiplication of integral types. More...
 
template<typename Type >
types::enable_if_integral_t< Type > tpf::safe_type::safe_div (Type a, Type b)
 Safe division of integral types. More...
 
template<typename Type >
types::enable_if_real_number_t< Type > tpf::safe_type::safe_add (Type a, Type b)
 
template<typename Type >
types::enable_if_real_number_t< Type > tpf::safe_type::safe_sub (Type a, Type b)
 
template<typename Type >
types::enable_if_real_number_t< Type > tpf::safe_type::safe_mul (Type a, Type b)
 
template<typename Type >
types::enable_if_real_number_t< Type > tpf::safe_type::safe_div (Type a, Type b)
 

Variables

template<typename Type >
constexpr Type tpf::safe_type::limits_max
 Upperbound number the Type can represent. More...
 
template<typename Type >
constexpr Type tpf::safe_type::limits_min
 Lowerbound number the Type can represent. More...
 
template<typename T >
constexpr int tpf::safe_type::sizeof_bits = sizeof(T) * 8
 Returns bit count of type T. More...
 
template<typename T >
constexpr auto tpf::safe_type::high_bit_mask
 Return's bit mask for the highest bit. More...
 

Detailed Description

This file implements safe arithmetic.

Author
your name (you@d.nosp@m.omai.nosp@m.n.com)
Version
0.1
Date
2019-05-08

Definition in file tpf_safe_type.hpp.

Macro Definition Documentation

◆ NOMINMAX

#define NOMINMAX

Definition at line 15 of file tpf_safe_type.hpp.