• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *          Copyright Andrey Semashev 2007 - 2015.
3  * Distributed under the Boost Software License, Version 1.0.
4  *    (See accompanying file LICENSE_1_0.txt or copy at
5  *          http://www.boost.org/LICENSE_1_0.txt)
6  */
7 /*!
8  * \file   default_attribute_names.cpp
9  * \author Andrey Semashev
10  * \date   13.07.2012
11  *
12  * \brief  This header is the Boost.Log library implementation, see the library documentation
13  *         at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html.
14  */
15 
16 #include <boost/log/detail/config.hpp>
17 #include <boost/smart_ptr/shared_ptr.hpp>
18 #include <boost/log/detail/default_attribute_names.hpp>
19 #include <boost/log/detail/singleton.hpp>
20 #include <boost/log/detail/header.hpp>
21 
22 namespace boost {
23 
24 BOOST_LOG_OPEN_NAMESPACE
25 
26 namespace aux {
27 
28 namespace default_attribute_names {
29 
30 BOOST_LOG_ANONYMOUS_NAMESPACE {
31 
32     class names :
33         public lazy_singleton< names, shared_ptr< names > >
34     {
35     private:
36         typedef lazy_singleton< names, shared_ptr< names > > base_type;
37 
38 #if !defined(BOOST_LOG_BROKEN_FRIEND_TEMPLATE_SPECIALIZATIONS)
39         friend class lazy_singleton< names, shared_ptr< names > >;
40 #else
41         friend class base_type;
42 #endif
43 
44     public:
45         const attribute_name severity;
46         const attribute_name channel;
47         const attribute_name message;
48         const attribute_name line_id;
49         const attribute_name timestamp;
50         const attribute_name process_id;
51         const attribute_name thread_id;
52 
53     private:
54         names() :
55             severity("Severity"),
56             channel("Channel"),
57             message("Message"),
58             line_id("LineID"),
59             timestamp("TimeStamp"),
60             process_id("ProcessID"),
61             thread_id("ThreadID")
62         {
63         }
64 
65         static void init_instance()
66         {
67             get_instance().reset(new names());
68         }
69 
70     public:
71         static names& get()
72         {
73             return *base_type::get();
74         }
75     };
76 
77 } // namespace
78 
79 BOOST_LOG_API attribute_name severity()
80 {
81     return names::get().severity;
82 }
83 
channel()84 BOOST_LOG_API attribute_name channel()
85 {
86     return names::get().channel;
87 }
88 
message()89 BOOST_LOG_API attribute_name message()
90 {
91     return names::get().message;
92 }
93 
line_id()94 BOOST_LOG_API attribute_name line_id()
95 {
96     return names::get().line_id;
97 }
98 
timestamp()99 BOOST_LOG_API attribute_name timestamp()
100 {
101     return names::get().timestamp;
102 }
103 
process_id()104 BOOST_LOG_API attribute_name process_id()
105 {
106     return names::get().process_id;
107 }
108 
thread_id()109 BOOST_LOG_API attribute_name thread_id()
110 {
111     return names::get().thread_id;
112 }
113 
114 } // namespace default_attribute_names
115 
116 } // namespace aux
117 
118 BOOST_LOG_CLOSE_NAMESPACE // namespace log
119 
120 } // namespace boost
121 
122 #include <boost/log/detail/footer.hpp>
123