libyui
 
Loading...
Searching...
No Matches
FSize Class Reference

#include <FSize.h>

Inheritance diagram for FSize:
Collaboration diagram for FSize:

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
 
FSizeoperator+= (const FSize &rhs)
 
FSizeoperator-= (const FSize &rhs)
 
FSizeoperator*= (const FSize &rhs)
 
FSizeoperator/= (const FSize &rhs)
 
bool operator< (const FSize &rhs) const
 
bool operator== (const FSize &rhs) const
 
FSizeoperator++ ()
 
FSizeoperator-- ()
 
FSizefillBlock (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
 

Detailed Description

Store and operate on (file/package/partition) sizes.

Member Enumeration Documentation

◆ Unit

enum class FSize::Unit
strong

The Units

Constructor & Destructor Documentation

◆ FSize() [1/3]

FSize::FSize ( const boost::multiprecision::cpp_int & size_r = 0,
const Unit unit_r = Unit::B )
inline

Construct from size in certain unit. E.g. FSize( 1, FSize::Unit::K ) makes 1024 Byte.

◆ FSize() [2/3]

FSize::FSize ( double size_r)
inline

Construct from size in Byte.

Parameters
size_rthe initial value

◆ FSize() [3/3]

FSize::FSize ( const std::string & sizeStr,
const Unit unit_r = Unit::B )

Construct from string containing a number in given unit.

Parameters
sizeStrinput string - must contain only numbers
unit_roptional unit, bytes by default
Exceptions
std::runtime_errorif the string contains any non numeric characters, even a trailing white space!

Member Function Documentation

◆ asString()

std::string FSize::asString ( ) const

Default string representation (precision 1 and unit appended).

◆ bestUnit()

FSize::Unit FSize::bestUnit ( ) const

Return the best unit for string representation.

◆ factor()

static boost::multiprecision::cpp_int FSize::factor ( const Unit unit_r)
inlinestatic

Return ammount of bytes in Unit.

◆ fillBlock()

FSize & FSize::fillBlock ( FSize blocksize_r = boost::multiprecision::cpp_int(KB))

Adjust size to multiple of blocksize_r

◆ form() [1/2]

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.

◆ form() [2/2]

std::string FSize::form ( unsigned fw = 0,
unsigned prec = bestPrec,
const bool showunit = true ) const
inline

Return string representation in bestUnit.

◆ fullBlock()

FSize FSize::fullBlock ( FSize blocksize_r = boost::multiprecision::cpp_int(KB)) const
inline

Return a new size adjusted to multiple of blocksize_r

◆ operator long long()

FSize::operator long long ( ) const
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

  • 1.67 - the min/max values for the corresponding type are returned
  • 1.66 - returns just the lower bits

◆ unit()

static const char * FSize::unit ( const Unit unit_r)
inlinestatic

String representation of Unit.

Member Data Documentation

◆ bestPrec

const unsigned FSize::bestPrec = (unsigned)-1
static

Used as precision argument to form(), the 'best' precision according to Unist is chosen.


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