You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
3.0 KiB
167 lines
3.0 KiB
4 years ago
|
/**
|
||
|
* @file Timestamp.h
|
||
|
* Definition of class example::Timestamp.
|
||
|
*/
|
||
|
|
||
|
#ifndef __Timestamp_h_
|
||
|
#define __Timestamp_h_
|
||
|
|
||
|
#include <string>
|
||
|
|
||
|
namespace example {
|
||
|
class IStreamable;
|
||
|
class InStream;
|
||
|
class OutStream;
|
||
|
|
||
|
/**
|
||
|
* Timestamp is a timestamp with nanosecond resolution.
|
||
|
*/
|
||
|
class Timestamp
|
||
|
: public IStreamable
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
/**
|
||
|
* Default constructor.
|
||
|
*/
|
||
|
Timestamp();
|
||
|
|
||
|
/**
|
||
|
* Constructor.
|
||
|
*
|
||
|
* @param sec The seconds
|
||
|
* @param nsec The nanoseconds
|
||
|
*/
|
||
|
Timestamp(long sec, unsigned long nsec);
|
||
|
|
||
|
/**
|
||
|
* Destructor.
|
||
|
*/
|
||
|
virtual ~Timestamp();
|
||
|
|
||
|
/**
|
||
|
* Adds two timestamps.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
* @return The resulting timestamp
|
||
|
*/
|
||
|
Timestamp operator+(const Timestamp& rhs) const;
|
||
|
|
||
|
/**
|
||
|
* Substracts two timestamps.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
* @return The resulting timestamp
|
||
|
*/
|
||
|
Timestamp operator-(const Timestamp& rhs) const;
|
||
|
|
||
|
/**
|
||
|
* Compares two timestamps.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
* @return true if timestamp is smaller than the given timestamp
|
||
|
*/
|
||
|
bool operator<(const Timestamp& rhs) const;
|
||
|
|
||
|
/**
|
||
|
* Compares two timestamps.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
* @return true if timestamp is greater than the given timestamp
|
||
|
*/
|
||
|
bool operator>(const Timestamp& rhs) const;
|
||
|
|
||
|
/**
|
||
|
* Compares two timestamps.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
* @return true if timestamp is equal to the given timestamp
|
||
|
*/
|
||
|
bool operator==(const Timestamp& rhs) const;
|
||
|
|
||
|
/**
|
||
|
* Compares two timestamps.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
* @return true if timestamp is not equal to the given timestamp
|
||
|
*/
|
||
|
bool operator!=(const Timestamp& rhs) const;
|
||
|
|
||
|
/**
|
||
|
* Adds an other timestamp.
|
||
|
*
|
||
|
* @param rhs The other timestamp
|
||
|
*/
|
||
|
void operator+=(const Timestamp& rhs);
|
||
|
|
||
|
/**
|
||
|
* Adds milliseconds.
|
||
|
*
|
||
|
* @param ms The milliseconds
|
||
|
* @return The resulting timestamp
|
||
|
*/
|
||
|
Timestamp addMilliseconds(unsigned long ms) const;
|
||
|
|
||
|
/**
|
||
|
* Adds nanoseconds.
|
||
|
*
|
||
|
* @param ns The nanoseconds
|
||
|
* @return The resulting timestamp
|
||
|
*/
|
||
|
Timestamp addNanoseconds(unsigned long ns) const;
|
||
|
|
||
|
/**
|
||
|
* Checks if this timestamp is zero.
|
||
|
*
|
||
|
* @return true if timestamp is zero
|
||
|
*/
|
||
|
bool isZero() const;
|
||
|
|
||
|
/**
|
||
|
* Gets the milliseconds.
|
||
|
* @attention Negativ timestamp return zero
|
||
|
*
|
||
|
* @return The milliseconds
|
||
|
*/
|
||
|
unsigned long getMilliseconds() const;
|
||
|
|
||
|
/**
|
||
|
* Divide timestamps by two.
|
||
|
*
|
||
|
* @return The resulting timestamp
|
||
|
*/
|
||
|
Timestamp divideByTwo();
|
||
|
|
||
|
/**
|
||
|
* Gets the string-representation.
|
||
|
*
|
||
|
* @return The string representation
|
||
|
*/
|
||
|
std::string getString() const;
|
||
|
|
||
|
/**
|
||
|
* Gets the string-representation in milliseconds.
|
||
|
*
|
||
|
* @return The string representation
|
||
|
*/
|
||
|
std::string getStringMilliseconds() const;
|
||
|
|
||
|
/**
|
||
|
* Resets the timestamp.
|
||
|
*/
|
||
|
void reset();
|
||
|
|
||
|
/** The seconds */
|
||
|
long sec;
|
||
|
|
||
|
/** The nanoseconds */
|
||
|
unsigned long nsec;
|
||
|
|
||
|
InStream& operator <<(InStream& in);
|
||
|
|
||
|
OutStream& operator >>(OutStream& out) const;
|
||
|
};
|
||
|
} // namespace
|
||
|
|
||
|
#endif // __Timestamp_h_
|