log4cpp 1.1.3
Loading...
Searching...
No Matches
CategoryStream.hh
Go to the documentation of this file.
1/*
2 * CategoryStream.hh
3 *
4 * Copyright 2001, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
5 * Copyright 2001, Bastiaan Bakker. All rights reserved.
6 *
7 * See the COPYING file for the terms of usage and distribution.
8 */
9
10#ifndef _LOG4CPP_CATEGORYSTREAM_HH
11#define _LOG4CPP_CATEGORYSTREAM_HH
12
14#include <log4cpp/Priority.hh>
15#include <ios>
16#ifdef LOG4CPP_HAVE_SSTREAM
17#include <sstream>
18#endif
20
21namespace log4cpp {
22
29
34
40 public:
41
48 CategoryStream(Category& category, Priority::Value priority);
49
54
59 inline Category& getCategory() const { return _category; };
60
65 inline Priority::Value getPriority() const throw() {
66 return _priority;
67 };
68
73 void flush();
74
80 template<typename T>
82 if (getPriority() != Priority::NOTSET) {
83 if (!_buffer) {
84 if (!(_buffer = new std::ostringstream)) {
85 // XXX help help help
86 }
87 }
88 (*_buffer) << t;
89 }
90 return *this;
91 }
92
93 CategoryStream& operator<<(const char* t);
94
95 template<typename T>
96 CategoryStream& operator<<(const std::string& t) {
97 if (getPriority() != Priority::NOTSET) {
98 if (!_buffer) {
99 if (!(_buffer = new std::ostringstream)) {
100 // XXX help help help
101 }
102 }
103 (*_buffer) << t;
104 }
105 return *this;
106 }
107#if LOG4CPP_HAS_WCHAR_T != 0
108 template<typename T>
109 CategoryStream& operator<<(const std::wstring& t) {
110 if (getPriority() != Priority::NOTSET) {
111 if (!_wbuffer) {
112 if (!(_wbuffer = new std::wostringstream)) {
113 // XXX help help help
114 }
115 }
116 (*_wbuffer) << t;
117 }
118 return *this;
119 }
120#endif
124 std::streamsize width(std::streamsize wide );
125
126
127 private:
128 Category& _category;
129 Priority::Value _priority;
130 union {
132#if LOG4CPP_HAS_WCHAR_T != 0
133 std::wostringstream* _wbuffer;
134#endif
135 };
136
137 public:
138 typedef CategoryStream& (*cspf) (CategoryStream&);
139
140 CategoryStream& operator << (cspf);
143 };
144}
145
146#endif // _LOG4CPP_CATEGORYSTREAM_HH
#define LOG4CPP_EXPORT
Definition Export.hh:26
This class enables streaming simple types and objects to a category.
Definition CategoryStream.hh:39
std::ostringstream * _buffer
Definition CategoryStream.hh:131
Category & getCategory() const
Returns the destination Category for this stream.
Definition CategoryStream.hh:59
CategoryStream & operator<<(const T &t)
Stream in arbitrary types and objects.
Definition CategoryStream.hh:81
CategoryStream & operator<<(const std::string &t)
Definition CategoryStream.hh:96
Priority::Value getPriority() const
Returns the priority for this stream.
Definition CategoryStream.hh:65
This is the central class in the log4j package.
Definition Category.hh:33
int Value
The type of Priority Values.
Definition Priority.hh:85
Definition Portability.hh:60
The top level namespace for all 'Log for C++' types and classes.
Definition AbortAppender.hh:16
ostream & operator<<(ostream &os, const width &w)
Definition Manipulator.cpp:10
LOG4CPP_EXPORT CategoryStream & eol(CategoryStream &os)
eol manipulator
Definition CategoryStream.cpp:65
class LOG4CPP_EXPORT Category
Definition CategoryStream.hh:23
LOG4CPP_EXPORT CategoryStream & left(CategoryStream &os)
left manipulator
Definition CategoryStream.cpp:71