Disk ARchive  2.7.15
Full featured and portable backup and archiving tool
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
libdar::limitint< B > Class Template Reference

#include <limitint.hpp>

+ Collaboration diagram for libdar::limitint< B >:

Public Member Functions

 limitint (size_t a=0)
 
 limitint (proto_generic_file &x)
 
 limitint (const limitint &ref)=default
 
 limitint (limitint &&ref) noexcept=default
 
limitintoperator= (const limitint &ref)=default
 
limitintoperator= (limitint &&ref) noexcept=default
 
void dump (proto_generic_file &x) const
 
void read (proto_generic_file &f)
 
limitintoperator+= (const limitint &ref)
 
limitintoperator-= (const limitint &ref)
 
limitintoperator*= (const limitint &ref)
 
template<class T >
limitint power (const T &exponent) const
 
limitintoperator/= (const limitint &ref)
 
limitintoperator%= (const limitint &ref)
 
limitintoperator&= (const limitint &ref)
 
limitintoperator|= (const limitint &ref)
 
limitintoperator^= (const limitint &ref)
 
limitintoperator>>= (U_32 bit)
 
limitintoperator>>= (limitint bit)
 
limitintoperator<<= (U_32 bit)
 
limitintoperator<<= (limitint bit)
 
limitint operator++ (int a)
 
limitint operator-- (int a)
 
limitintoperator++ ()
 
limitintoperator-- ()
 
U_32 operator% (U_32 arg) const
 
template<class T >
void unstack (T &v)
 
limitint get_storage_size () const
 
unsigned char operator[] (const limitint &position) const
 
bool is_zero () const
 
bool operator< (const limitint &x) const
 
bool operator== (const limitint &x) const
 
bool operator> (const limitint &x) const
 
bool operator<= (const limitint &x) const
 
bool operator!= (const limitint &x) const
 
bool operator>= (const limitint &x) const
 
debug_get_max () const
 
debug_get_bytesize () const
 
debug_get_field () const
 
template<class T >
limitint< B > power (const T &exponent) const
 

Static Public Member Functions

static bool is_system_big_endian ()
 

Private Types

enum  endian { big_endian , little_endian , not_initialized }
 
using group = unsigned char[TG]
 

Private Member Functions

void build_from_file (proto_generic_file &x)
 
template<class T >
void limitint_from (T a)
 
template<class T >
max_val_of (T x)
 
template<class T >
void limitint_unstack_to (T &a)
 

Static Private Member Functions

static void setup_endian ()
 

Private Attributes

field
 

Static Private Attributes

static const int TG = 4
 
static const U_32 sizeof_field = sizeof(B)
 
static endian used_endian = not_initialized
 
static const U_I bytesize = sizeof(B)
 
static const B max_value = ~B(0) > 0 ? ~B(0) : ~(B(1) << (bytesize*8 - 1))
 
static U_8 zeroed_field [ZEROED_SIZE]
 

Detailed Description

template<class B>
class libdar::limitint< B >

limitint template class

the limitint template class implementation can handle positive integers and detect overflow. It shares with infinint the same interface, so it can be use in place of it, but throw Elimitint exceptions if overflow is detected. this template class receive as argument a positive integer atomic type In particular it is assumed that the sizeof() operator gives the amount of byte of information that this type can handle, and it is also assumed that the bytes of information are contiguous.

Note
if you just want to convert an infinint integer to its decimal representation see the class libdar::deci

Definition at line 87 of file limitint.hpp.


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