Disk ARchive 2.7.16
Full featured and portable backup and archiving tool
Loading...
Searching...
No Matches
libdar5::datetime Class Reference

stores time information More...

#include <datetime.hpp>

Collaboration diagram for libdar5::datetime:

Public Types

enum  time_unit { tu_nanosecond , tu_microsecond , tu_second }

Public Member Functions

 datetime (const infinint &value=0)
 constructor based on the number of second ellasped since the end of 1969
 datetime (time_t second, time_t subsec, time_unit unit)
 general constructor
 datetime (generic_file &x, archive_version ver)
 constructor reading data dump() into a generic_file
 datetime (const datetime &ref)=default
 datetime (datetime &&ref) noexcept=default
datetimeoperator= (const datetime &ref)=default
datetimeoperator= (datetime &&ref) noexcept=default
bool operator< (const datetime &ref) const
bool operator== (const datetime &ref) const
bool operator!= (const datetime &ref) const
bool operator>= (const datetime &ref) const
bool operator> (const datetime &ref) const
bool operator<= (const datetime &ref) const
void operator-= (const datetime &ref)
void operator+= (const datetime &ref)
datetime operator- (const datetime &ref) const
datetime operator+ (const datetime &ref) const
bool loose_equal (const datetime &ref) const
 equivalent to operator == but if compared object use different time unit, do the comparison rounding up the values to the largest unit
datetime loose_diff (const datetime &ref) const
 at the difference of operator - provides the difference using the less precise unit used between the two elements
infinint get_second_value () const
 return the integer number of second
infinint get_subsecond_value (time_unit unit) const
 return the subsecond time fraction expressed in the given time unit
time_unit get_unit () const
 returns the time unit used internally to store the subsecond time fraction
bool get_value (time_t &second, time_t &subsecond, time_unit unit) const
 return a time as time_t arguments
void dump (generic_file &x) const
 write down this to file
void read (generic_file &f, archive_version ver)
 read this from file
bool is_null () const
 return true if the datetime is exactly January 1st, 1970, 0 h 0 mn 0 s
bool is_integer_second () const
 return true if the datetime is an integer number of second (subsecond part is zero)
infinint get_storage_size () const
 return the storage it would require to dump this object
void nullify ()
 set to null (zero)

Private Member Functions

void get_value (infinint &sec, infinint &sub, time_unit unit) const
void reduce_to_largest_unit () const
 reduce the value to the largest unit possible
void build (const infinint &sec, const infinint &sub, time_unit unit)

Static Private Member Functions

static time_unit min (time_unit a, time_unit b)
static time_unit max (time_unit a, time_unit b)
static char time_unit_to_char (time_unit a)
static time_unit char_to_time_unit (const char a)
static const infinintget_scaling_factor (time_unit source, time_unit dest)
 return the factor between two units

Private Attributes

infinint val
time_unit uni

Detailed Description

stores time information

Definition at line 58 of file datetime.hpp.

Member Enumeration Documentation

◆ time_unit

enum libdar::datetime::time_unit

Definition at line 63 of file datetime.hpp.

Constructor & Destructor Documentation

◆ datetime() [1/2]

libdar::datetime::datetime ( const infinint & value = 0)
inline

constructor based on the number of second ellasped since the end of 1969

Definition at line 66 of file datetime.hpp.

◆ datetime() [2/2]

libdar::datetime::datetime ( time_t second,
time_t subsec,
time_unit unit )

general constructor

Parameters
[in]secondthe number of second since the dawn of computer time (1970)
[in]subsecthe fraction of the time below 1 second expressed in the time unit given as next argument
[in]unitthe time unit in which is expressed the previous argument

Member Function Documentation

◆ get_scaling_factor()

const infinint & libdar::datetime::get_scaling_factor ( time_unit source,
time_unit dest )
staticprivate

return the factor between two units

Note
"source" must be larger than "dest" (source >= dest), else an exception is thrown
Returns
the factor f, which makes the following to be true: source = f*dest

◆ get_second_value()

infinint libdar::datetime::get_second_value ( ) const
inline

return the integer number of second

Definition at line 107 of file datetime.hpp.

◆ get_unit()

time_unit libdar::datetime::get_unit ( ) const
inline

returns the time unit used internally to store the subsecond time fraction

Definition at line 113 of file datetime.hpp.

◆ get_value()

bool libdar::datetime::get_value ( time_t & second,
time_t & subsecond,
time_unit unit ) const

return a time as time_t arguments

Parameters
[out]secondthe time value in second
[out]subsecondis the remaining time fraction as expressed in the unit given as next argument
[in]unitthe unit of the subsecond fraction of the timestamp
Returns
true upon success, false if the value cannot be represented by system types (overflow)

◆ is_integer_second()

bool libdar::datetime::is_integer_second ( ) const
inline

return true if the datetime is an integer number of second (subsecond part is zero)

Definition at line 134 of file datetime.hpp.

◆ is_null()

bool libdar::datetime::is_null ( ) const
inline

return true if the datetime is exactly January 1st, 1970, 0 h 0 mn 0 s

Definition at line 131 of file datetime.hpp.

◆ nullify()

void libdar::datetime::nullify ( )
inline

set to null (zero)

Definition at line 140 of file datetime.hpp.

◆ operator!=()

bool libdar::datetime::operator!= ( const datetime & ref) const
inline

Definition at line 89 of file datetime.hpp.

◆ operator+()

datetime libdar::datetime::operator+ ( const datetime & ref) const
inline

Definition at line 98 of file datetime.hpp.

◆ operator-()

datetime libdar::datetime::operator- ( const datetime & ref) const
inline

Definition at line 97 of file datetime.hpp.

◆ operator<=()

bool libdar::datetime::operator<= ( const datetime & ref) const
inline

Definition at line 92 of file datetime.hpp.

◆ operator>()

bool libdar::datetime::operator> ( const datetime & ref) const
inline

Definition at line 91 of file datetime.hpp.

◆ operator>=()

bool libdar::datetime::operator>= ( const datetime & ref) const
inline

Definition at line 90 of file datetime.hpp.

Member Data Documentation

◆ uni

time_unit libdar::datetime::uni
private

Definition at line 150 of file datetime.hpp.

◆ val

infinint libdar::datetime::val
private

Definition at line 149 of file datetime.hpp.


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