Disk ARchive 2.7.16
Full featured and portable backup and archiving tool
Loading...
Searching...
No Matches
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
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.

Member Function Documentation

◆ power()

template<class B>
template<class T>
limitint< B > libdar::limitint< B >::power ( const T & exponent) const

Definition at line 452 of file limitint.hpp.


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