summaryrefslogtreecommitdiff
path: root/ext/Log4Qt/src/level.h
blob: 056e82a9f3b9aac222bde8943d6d3ab42823ead3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/******************************************************************************
 *
 * package:     Log4Qt
 * file:        level.h
 * created:     September 2007
 * author:      Martin Heinrich
 *
 *
 * Copyright 2007 Martin Heinrich
 *
 * 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.
 *
 ******************************************************************************/

#ifndef LOG4QT_LEVEL_H
#define LOG4QT_LEVEL_H


/******************************************************************************
 * Dependencies
 ******************************************************************************/

#include <QtCore/QString>
#include <QtCore/QMetaType>
#include "log4qt.h"


/******************************************************************************
 * Declarations
 ******************************************************************************/

namespace Log4Qt
{

	/*!
	 * \brief The class Level defines the level of a logging event.
	 *
	 * \note All the functions declared in this class are thread-safe.
	 */
	class LOG4QT_EXPORT Level
	{
	public:
			// Comparisson operators rely on the order:
			// NULL_INT < ALL_INT < TRACE_INT < ...
			// Serialisation uses unsigned 8 bit int

			/*!
			 * The enumeration Value contains all possible Level values.
			 */
			enum Value
			{
					/*! NULL_INT is used for no level has been specified */
					NULL_INT = 0,
					ALL_INT = 32,
					TRACE_INT = 64,
					DEBUG_INT = 96,
					INFO_INT = 128,
					WARN_INT = 150,
					ERROR_INT = 182,
					FATAL_INT = 214,
					OFF_INT = 255
			};

	public:
			Level(Value value = NULL_INT);
			// Level(const Level &rOther); // Use compiler default
			// virtual ~Level(); // Use compiler default
			// Level &operator=(const Level &rOther); // Use compiler default

			int syslogEquivalent() const;
			int toInt() const;

			bool operator==(const Level &rOther) const;
			bool operator!=(const Level &rOther) const;
			bool operator<(const Level &rOther) const;
			bool operator<=(const Level &rOther) const;
			bool operator>(const Level &rOther) const;
			bool operator>=(const Level &rOther) const;
			QString toString() const;

			static Level fromString(const QString &rName, bool *pOk = 0);

	private:
			// QMutex mObjectGuard;
		volatile Value mValue;

#ifndef QT_NO_DATASTREAM
				// Needs to be friend to stream objects
			friend QDataStream &operator<<(QDataStream &rStream,
																		 const Level &rLevel);
			friend QDataStream &operator>>(QDataStream &rStream,
																		 Level &rLevel);
#endif // QT_NO_DATASTREAM
	};


	/**************************************************************************
	 * Operators, Helper
	 **************************************************************************/

#ifndef QT_NO_DATASTREAM
		/*!
		 * \relates Level
		 *
		 * Writes the given error \a rLevel to the given stream \a rStream,
		 * and returns a reference to the stream.
		 */
		QDataStream &operator<<(QDataStream &rStream,
														const Level &rLevel);

		/*!
		 * \relates Level
		 *
		 * Reads an error from the given stream \a rStream into the given
		 * error \a rLevel, and returns a reference to the stream.
		 */
		QDataStream &operator>>(QDataStream &rStream,
														Level &rLevel);
#endif // QT_NO_DATASTREAM

#ifndef QT_NO_DEBUG_STREAM
	/*!
	 * \relates Level
	 *
	 * Writes all object member variables to the given debug stream \a rDebug
	 * and returns the stream.
	 *
	 * <tt>
	 * %Level("ERROR")
	 * </tt>
	 * \sa QDebug
	 */
	QDebug operator<<(QDebug debug,
										const Level &rLevel);
#endif // QT_NO_DEBUG_STREAM

} // namespace Log4Qt


Q_DECLARE_METATYPE(Log4Qt::Level)
Q_DECLARE_TYPEINFO(Log4Qt::Level, Q_MOVABLE_TYPE);


#endif // LOG4QT_LEVEL_H