summaryrefslogtreecommitdiff
path: root/boost/log/attributes/time_traits.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/log/attributes/time_traits.hpp')
-rw-r--r--boost/log/attributes/time_traits.hpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/boost/log/attributes/time_traits.hpp b/boost/log/attributes/time_traits.hpp
new file mode 100644
index 0000000000..9a967f8cb8
--- /dev/null
+++ b/boost/log/attributes/time_traits.hpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright Andrey Semashev 2007 - 2014.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+/*!
+ * \file time_traits.hpp
+ * \author Andrey Semashev
+ * \date 01.12.2007
+ *
+ * The header contains implementation of time traits that are used in various parts of the
+ * library to acquire current time.
+ */
+
+#ifndef BOOST_LOG_ATTRIBUTES_TIME_TRAITS_HPP_INCLUDED_
+#define BOOST_LOG_ATTRIBUTES_TIME_TRAITS_HPP_INCLUDED_
+
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/log/detail/config.hpp>
+#include <boost/log/detail/header.hpp>
+
+#ifdef BOOST_HAS_PRAGMA_ONCE
+#pragma once
+#endif
+
+namespace boost {
+
+BOOST_LOG_OPEN_NAMESPACE
+
+namespace attributes {
+
+//! Base class for time traits involving Boost.DateTime.
+struct basic_time_traits
+{
+ //! Time type
+ typedef posix_time::ptime time_type;
+
+ //! Current time source
+#if defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
+ typedef posix_time::microsec_clock clock_source;
+#else
+ typedef posix_time::second_clock clock_source;
+#endif // defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
+};
+
+//! Time traits that describes UTC time acquirement via Boost.DateTime facilities
+struct utc_time_traits :
+ public basic_time_traits
+{
+ /*!
+ * \return Current time stamp
+ */
+ static time_type get_clock()
+ {
+ return clock_source::universal_time();
+ }
+};
+
+//! Time traits that describes local time acquirement via Boost.DateTime facilities
+struct local_time_traits :
+ public basic_time_traits
+{
+ /*!
+ * \return Current time stamp
+ */
+ static time_type get_clock()
+ {
+ return clock_source::local_time();
+ }
+};
+
+} // namespace attributes
+
+BOOST_LOG_CLOSE_NAMESPACE // namespace log
+
+} // namespace boost
+
+#include <boost/log/detail/footer.hpp>
+
+#endif // BOOST_LOG_ATTRIBUTES_TIME_TRAITS_HPP_INCLUDED_