OpenCoverage

PrintStream.h

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/3rdparty/masm/wtf/PrintStream.h
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright (C) 2012 Apple Inc. All rights reserved.-
3 *-
4 * Redistribution and use in source and binary forms, with or without-
5 * modification, are permitted provided that the following conditions-
6 * are met:-
7 * 1. Redistributions of source code must retain the above copyright-
8 * notice, this list of conditions and the following disclaimer.-
9 * 2. Redistributions in binary form must reproduce the above copyright-
10 * notice, this list of conditions and the following disclaimer in the-
11 * documentation and/or other materials provided with the distribution.-
12 *-
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY-
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR-
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,-
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,-
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR-
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY-
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT-
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE-
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -
24 */-
25-
26#ifndef PrintStream_h-
27#define PrintStream_h-
28-
29#include <stdarg.h>-
30#include <wtf/FastAllocBase.h>-
31#include <wtf/Noncopyable.h>-
32#include <wtf/Platform.h>-
33#include <wtf/RawPointer.h>-
34#include <wtf/StdLibExtras.h>-
35-
36namespace WTF {-
37-
38class CString;-
39class String;-
40-
41class PrintStream {-
42 WTF_MAKE_FAST_ALLOCATED; WTF_MAKE_NONCOPYABLE(PrintStream);-
43public:-
44 PrintStream();-
45 virtual ~PrintStream();-
46-
47 void printf(const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);-
48 virtual void vprintf(const char* format, va_list) WTF_ATTRIBUTE_PRINTF(2, 0) = 0;-
49-
50 // Typically a no-op for many subclasses of PrintStream, this is a hint that-
51 // the implementation should flush its buffers if it had not done so already.-
52 virtual void flush();-
53 -
54 template<typename T>-
55 void print(const T& value)-
56 {-
57 printInternal(*this, value);-
58 }
never executed: end of block
0
59 -
60 template<typename T1, typename T2>-
61 void print(const T1& value1, const T2& value2)-
62 {-
63 print(value1);-
64 print(value2);-
65 }
never executed: end of block
0
66 -
67 template<typename T1, typename T2, typename T3>-
68 void print(const T1& value1, const T2& value2, const T3& value3)-
69 {-
70 print(value1);-
71 print(value2);-
72 print(value3);-
73 }
never executed: end of block
0
74 -
75 template<typename T1, typename T2, typename T3, typename T4>-
76 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4)-
77 {-
78 print(value1);-
79 print(value2);-
80 print(value3);-
81 print(value4);-
82 }
never executed: end of block
0
83 -
84 template<typename T1, typename T2, typename T3, typename T4, typename T5>-
85 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5)-
86 {-
87 print(value1);-
88 print(value2);-
89 print(value3);-
90 print(value4);-
91 print(value5);-
92 }
never executed: end of block
0
93 -
94 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>-
95 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6)-
96 {-
97 print(value1);-
98 print(value2);-
99 print(value3);-
100 print(value4);-
101 print(value5);-
102 print(value6);-
103 }
never executed: end of block
0
104 -
105 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>-
106 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7)-
107 {-
108 print(value1);-
109 print(value2);-
110 print(value3);-
111 print(value4);-
112 print(value5);-
113 print(value6);-
114 print(value7);-
115 }
never executed: end of block
0
116 -
117 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>-
118 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7, const T8& value8)-
119 {-
120 print(value1);-
121 print(value2);-
122 print(value3);-
123 print(value4);-
124 print(value5);-
125 print(value6);-
126 print(value7);-
127 print(value8);-
128 }
never executed: end of block
0
129 -
130 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>-
131 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7, const T8& value8, const T9& value9)-
132 {-
133 print(value1);-
134 print(value2);-
135 print(value3);-
136 print(value4);-
137 print(value5);-
138 print(value6);-
139 print(value7);-
140 print(value8);-
141 print(value9);-
142 }
never executed: end of block
0
143 -
144 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>-
145 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7, const T8& value8, const T9& value9, const T10& value10)-
146 {-
147 print(value1);-
148 print(value2);-
149 print(value3);-
150 print(value4);-
151 print(value5);-
152 print(value6);-
153 print(value7);-
154 print(value8);-
155 print(value9);-
156 print(value10);-
157 }
never executed: end of block
0
158 -
159 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>-
160 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7, const T8& value8, const T9& value9, const T10& value10, const T11& value11)-
161 {-
162 print(value1);-
163 print(value2);-
164 print(value3);-
165 print(value4);-
166 print(value5);-
167 print(value6);-
168 print(value7);-
169 print(value8);-
170 print(value9);-
171 print(value10);-
172 print(value11);-
173 }
never executed: end of block
0
174 -
175 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>-
176 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7, const T8& value8, const T9& value9, const T10& value10, const T11& value11, const T12& value12)-
177 {-
178 print(value1);-
179 print(value2);-
180 print(value3);-
181 print(value4);-
182 print(value5);-
183 print(value6);-
184 print(value7);-
185 print(value8);-
186 print(value9);-
187 print(value10);-
188 print(value11);-
189 print(value12);-
190 }
never executed: end of block
0
191 -
192 template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>-
193 void print(const T1& value1, const T2& value2, const T3& value3, const T4& value4, const T5& value5, const T6& value6, const T7& value7, const T8& value8, const T9& value9, const T10& value10, const T11& value11, const T12& value12, const T13& value13)-
194 {-
195 print(value1);-
196 print(value2);-
197 print(value3);-
198 print(value4);-
199 print(value5);-
200 print(value6);-
201 print(value7);-
202 print(value8);-
203 print(value9);-
204 print(value10);-
205 print(value11);-
206 print(value12);-
207 print(value13);-
208 }
never executed: end of block
0
209};-
210-
211WTF_EXPORT_PRIVATE void printInternal(PrintStream&, const char*);-
212inline void printInternal(PrintStream& out, char* value) { printInternal(out, static_cast<const char*>(value)); }
never executed: end of block
0
213WTF_EXPORT_PRIVATE void printInternal(PrintStream&, bool);-
214WTF_EXPORT_PRIVATE void printInternal(PrintStream&, int);-
215WTF_EXPORT_PRIVATE void printInternal(PrintStream&, unsigned);-
216WTF_EXPORT_PRIVATE void printInternal(PrintStream&, long);-
217WTF_EXPORT_PRIVATE void printInternal(PrintStream&, unsigned long);-
218WTF_EXPORT_PRIVATE void printInternal(PrintStream&, long long);-
219WTF_EXPORT_PRIVATE void printInternal(PrintStream&, unsigned long long);-
220WTF_EXPORT_PRIVATE void printInternal(PrintStream&, float);-
221WTF_EXPORT_PRIVATE void printInternal(PrintStream&, double);-
222WTF_EXPORT_PRIVATE void printInternal(PrintStream&, RawPointer);-
223-
224template<typename T>-
225void printInternal(PrintStream& out, const T& value)-
226{-
227 value.dump(out);-
228}
never executed: end of block
0
229-
230#define MAKE_PRINT_ADAPTOR(Name, Type, function) \-
231 class Name { \-
232 public: \-
233 Name(const Type& value) \-
234 : m_value(value) \-
235 { \-
236 } \-
237 void dump(PrintStream& out) const \-
238 { \-
239 function(out, m_value); \-
240 } \-
241 private: \-
242 Type m_value; \-
243 }-
244-
245#define MAKE_PRINT_METHOD_ADAPTOR(Name, Type, method) \-
246 class Name { \-
247 public: \-
248 Name(const Type& value) \-
249 : m_value(value) \-
250 { \-
251 } \-
252 void dump(PrintStream& out) const \-
253 { \-
254 m_value.method(out); \-
255 } \-
256 private: \-
257 const Type& m_value; \-
258 }-
259-
260#define MAKE_PRINT_METHOD(Type, dumpMethod, method) \-
261 MAKE_PRINT_METHOD_ADAPTOR(DumperFor_##method, Type, dumpMethod); \-
262 DumperFor_##method method() const { return DumperFor_##method(*this); }-
263-
264// Use an adaptor-based dumper for characters to avoid situations where-
265// you've "compressed" an integer to a character and it ends up printing-
266// as ASCII when you wanted it to print as a number.-
267void dumpCharacter(PrintStream&, char);-
268MAKE_PRINT_ADAPTOR(CharacterDump, char, dumpCharacter);
never executed: end of block
never executed: end of block
0
269-
270template<typename T>-
271class PointerDump {-
272public:-
273 PointerDump(const T* ptr)-
274 : m_ptr(ptr)-
275 {-
276 }
never executed: end of block
0
277 -
278 void dump(PrintStream& out) const-
279 {-
280 if (m_ptr)
m_ptrDescription
TRUEnever evaluated
FALSEnever evaluated
0
281 printInternal(out, *m_ptr);
never executed: printInternal(out, *m_ptr);
0
282 else-
283 out.print("(null)");
never executed: out.print("(null)");
0
284 }-
285private:-
286 const T* m_ptr;-
287};-
288-
289template<typename T>-
290PointerDump<T> pointerDump(const T* ptr) { return PointerDump<T>(ptr); }
never executed: return PointerDump<T>(ptr);
0
291-
292} // namespace WTF-
293-
294using WTF::CharacterDump;-
295using WTF::PointerDump;-
296using WTF::PrintStream;-
297using WTF::pointerDump;-
298-
299#endif // PrintStream_h-
300-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0