#include <FSize.h>
Public Types | |
enum class | Unit { B , K , M , G , T , P , E , Z , Y } |
Public Member Functions | |
FSize (const boost::multiprecision::cpp_int &size_r=0, const Unit unit_r=Unit::B) | |
FSize (double size_r) | |
FSize (const std::string &sizeStr, const Unit unit_r=Unit::B) | |
operator long long () const | |
operator int () const | |
operator double () const | |
operator boost::multiprecision::cpp_int () const | |
boost::multiprecision::cpp_int | in_unit (const Unit unit_r) const |
FSize | operator- () const |
FSize & | operator+= (const FSize &rhs) |
FSize & | operator-= (const FSize &rhs) |
FSize & | operator*= (const FSize &rhs) |
FSize & | operator/= (const FSize &rhs) |
bool | operator< (const FSize &rhs) const |
bool | operator== (const FSize &rhs) const |
FSize & | operator++ () |
FSize & | operator-- () |
FSize & | fillBlock (FSize blocksize_r=boost::multiprecision::cpp_int(KB)) |
FSize | fullBlock (FSize blocksize_r=boost::multiprecision::cpp_int(KB)) const |
Unit | bestUnit () const |
std::string | form (const Unit unit_r, unsigned fw=0, unsigned prec=bestPrec, const bool showunit=true) const |
std::string | form (unsigned fw=0, unsigned prec=bestPrec, const bool showunit=true) const |
std::string | asString () const |
Static Public Member Functions | |
static boost::multiprecision::cpp_int | factor (const Unit unit_r) |
static const char * | unit (const Unit unit_r) |
Static Public Attributes | |
static const boost::multiprecision::cpp_int | KB = 1024 |
static const boost::multiprecision::cpp_int | MB = FSize::KB * 1024 |
static const boost::multiprecision::cpp_int | GB = FSize::MB * 1024 |
static const boost::multiprecision::cpp_int | TB = FSize::GB * 1024 |
static const boost::multiprecision::cpp_int | PB = FSize::TB * 1024 |
static const boost::multiprecision::cpp_int | EB = FSize::PB * 1024 |
static const boost::multiprecision::cpp_int | ZB = FSize::EB * 1024 |
static const boost::multiprecision::cpp_int | YB = FSize::ZB * 1024 |
static const unsigned | bestPrec = (unsigned)-1 |
Store and operate on (file/package/partition) sizes.
|
strong |
The Units
|
inline |
Construct from size in certain unit. E.g. FSize( 1, FSize::Unit::K )
makes 1024 Byte.
|
inline |
Construct from size in Byte.
size_r | the initial value |
FSize::FSize | ( | const std::string & | sizeStr, |
const Unit | unit_r = Unit::B ) |
Construct from string containing a number in given unit.
sizeStr | input string - must contain only numbers |
unit_r | optional unit, bytes by default |
std::runtime_error | if the string contains any non numeric characters, even a trailing white space! |
std::string FSize::asString | ( | ) | const |
Default string representation (precision 1 and unit appended).
FSize::Unit FSize::bestUnit | ( | ) | const |
Return the best unit for string representation.
|
inlinestatic |
Return ammount of bytes in Unit.
Adjust size to multiple of blocksize_r
std::string FSize::form | ( | const Unit | unit_r, |
unsigned | fw = 0, | ||
unsigned | prec = bestPrec, | ||
const bool | showunit = true ) const |
Return string representation in given Unit. Parameter fw
and prec
denote field width and precision as in a "%*.*f" printf format string. Avalue of bestPrec
automatically picks an appropriate precision depending on the unit. If showunit
ist true, the string representaion of Unit is appended separated by a single blank.
If Unit is Byte, precision is set to zero.
|
inline |
Return string representation in bestUnit.
Return a new size adjusted to multiple of blocksize_r
|
inlineexplicit |
Conversions to native data types - only explicit as it might overflow If the value is out of range then the behavior depends on the boost version
|
static |
Used as precision argument to form(), the 'best' precision according to Unist is chosen.