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.
|
|
// -*- C++ -*-
// Module: Log4CPLUS
// File: timehelper.h
// Created: 6/2003
// Author: Tad E. Smith
//
//
// Copyright 2003-2010 Tad E. Smith
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/** @file */
#ifndef LOG4CPLUS_HELPERS_TIME_HELPER_HEADER_
#define LOG4CPLUS_HELPERS_TIME_HELPER_HEADER_
#include <log4cplus/config.hxx>
#if defined (LOG4CPLUS_HAVE_PRAGMA_ONCE)
#pragma once
#endif
#include <log4cplus/tstring.h>
#if defined (LOG4CPLUS_HAVE_TIME_H)
#include <time.h>
#endif
#include <ctime>
namespace log4cplus {
namespace helpers {
using std::time_t; using std::tm;
/**
* This class represents a Epoch time with microsecond accuracy. */ class LOG4CPLUS_EXPORT Time { public: Time(); Time(time_t tv_sec, long tv_usec); explicit Time(time_t time);
/**
* Returns the current time using the <code>gettimeofday()</code> * method if it is available on the current platform. (Not on * WIN32.) */ static Time gettimeofday();
// Methods
/**
* Returns <i>seconds</i> value. */ time_t sec() const { return tv_sec; }
/**
* Returns <i>microseconds</i> value. */ long usec() const { return tv_usec; }
/**
* Sets the <i>seconds</i> value. */ void sec(time_t s) { tv_sec = s; }
/**
* Sets the <i>microseconds</i> value. */ void usec(long us) { tv_usec = us; }
/**
* Sets this Time using the <code>mktime</code> function. */ time_t setTime(tm* t);
/**
* Returns this Time as a <code>time_t</code> value. */ time_t getTime() const LOG4CPLUS_ATTRIBUTE_PURE;
/**
* Populates <code>tm</code> using the <code>gmtime()</code> * function. */ void gmtime(tm* t) const;
/**
* Populates <code>tm</code> using the <code>localtime()</code> * function. */ void localtime(tm* t) const;
/**
* Returns a string with a "formatted time" specified by * <code>fmt</code>. It used the <code>strftime()</code> * function to do this. * * Look at your platform's <code>strftime()</code> documentation * for the formatting options available. * * The following additional options are provided:<br> * <code>%q</code> - 3 character field that provides milliseconds * <code>%Q</code> - 7 character field that provides fractional * milliseconds. */ log4cplus::tstring getFormattedTime(const log4cplus::tstring& fmt, bool use_gmtime = false) const;
// Operators
Time& operator+=(const Time& rhs); Time& operator-=(const Time& rhs); Time& operator/=(long rhs); Time& operator*=(long rhs);
private: // Data
time_t tv_sec; /* seconds */ long tv_usec; /* microseconds */ };
LOG4CPLUS_EXPORT const log4cplus::helpers::Time operator+ (const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs); LOG4CPLUS_EXPORT const log4cplus::helpers::Time operator- (const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs); LOG4CPLUS_EXPORT const log4cplus::helpers::Time operator/ (const log4cplus::helpers::Time& lhs, long rhs); LOG4CPLUS_EXPORT const log4cplus::helpers::Time operator* (const log4cplus::helpers::Time& lhs, long rhs);
LOG4CPLUS_EXPORT bool operator<(const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs) LOG4CPLUS_ATTRIBUTE_PURE; LOG4CPLUS_EXPORT bool operator<=(const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs) LOG4CPLUS_ATTRIBUTE_PURE;
LOG4CPLUS_EXPORT bool operator>(const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs) LOG4CPLUS_ATTRIBUTE_PURE; LOG4CPLUS_EXPORT bool operator>=(const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs) LOG4CPLUS_ATTRIBUTE_PURE;
LOG4CPLUS_EXPORT bool operator==(const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs) LOG4CPLUS_ATTRIBUTE_PURE; LOG4CPLUS_EXPORT bool operator!=(const log4cplus::helpers::Time& lhs, const log4cplus::helpers::Time& rhs) LOG4CPLUS_ATTRIBUTE_PURE;
} // namespace helpers
} // namespace log4cplus
#endif // LOG4CPLUS_HELPERS_TIME_HELPER_HEADER_
|