| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/3rdparty/masm/wtf/PrintStream.h |
| Source code | Switch to Preprocessed file |
| Line | Source | Count | ||||||
|---|---|---|---|---|---|---|---|---|
| 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 | - | |||||||
| 36 | namespace WTF { | - | ||||||
| 37 | - | |||||||
| 38 | class CString; | - | ||||||
| 39 | class String; | - | ||||||
| 40 | - | |||||||
| 41 | class PrintStream { | - | ||||||
| 42 | WTF_MAKE_FAST_ALLOCATED; WTF_MAKE_NONCOPYABLE(PrintStream); | - | ||||||
| 43 | public: | - | ||||||
| 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 | - | |||||||
| 211 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, const char*); | - | ||||||
| 212 | inline void printInternal(PrintStream& out, char* value) { printInternal(out, static_cast<const char*>(value)); } never executed: end of block | 0 | ||||||
| 213 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, bool); | - | ||||||
| 214 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, int); | - | ||||||
| 215 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, unsigned); | - | ||||||
| 216 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, long); | - | ||||||
| 217 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, unsigned long); | - | ||||||
| 218 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, long long); | - | ||||||
| 219 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, unsigned long long); | - | ||||||
| 220 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, float); | - | ||||||
| 221 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, double); | - | ||||||
| 222 | WTF_EXPORT_PRIVATE void printInternal(PrintStream&, RawPointer); | - | ||||||
| 223 | - | |||||||
| 224 | template<typename T> | - | ||||||
| 225 | void 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. | - | ||||||
| 267 | void dumpCharacter(PrintStream&, char); | - | ||||||
| 268 | MAKE_PRINT_ADAPTOR(CharacterDump, char, dumpCharacter); never executed: end of blocknever executed: end of block | 0 | ||||||
| 269 | - | |||||||
| 270 | template<typename T> | - | ||||||
| 271 | class PointerDump { | - | ||||||
| 272 | public: | - | ||||||
| 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)
| 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 | } | - | ||||||
| 285 | private: | - | ||||||
| 286 | const T* m_ptr; | - | ||||||
| 287 | }; | - | ||||||
| 288 | - | |||||||
| 289 | template<typename T> | - | ||||||
| 290 | PointerDump<T> pointerDump(const T* ptr) { return PointerDump<T>(ptr); } never executed: return PointerDump<T>(ptr); | 0 | ||||||
| 291 | - | |||||||
| 292 | } // namespace WTF | - | ||||||
| 293 | - | |||||||
| 294 | using WTF::CharacterDump; | - | ||||||
| 295 | using WTF::PointerDump; | - | ||||||
| 296 | using WTF::PrintStream; | - | ||||||
| 297 | using WTF::pointerDump; | - | ||||||
| 298 | - | |||||||
| 299 | #endif // PrintStream_h | - | ||||||
| 300 | - | |||||||
| Source code | Switch to Preprocessed file |