• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "config.h"
27 #include "PrintStream.h"
28 
29 #include <stdio.h>
30 #include "wtf/text/CString.h"
31 #include "wtf/text/WTFString.h"
32 
33 namespace WTF {
34 
PrintStream()35 PrintStream::PrintStream() { }
~PrintStream()36 PrintStream::~PrintStream() { } // Force the vtable to be in this module
37 
printf(const char * format,...)38 void PrintStream::printf(const char* format, ...)
39 {
40     va_list argList;
41     va_start(argList, format);
42     vprintf(format, argList);
43     va_end(argList);
44 }
45 
flush()46 void PrintStream::flush()
47 {
48 }
49 
printInternal(PrintStream & out,const char * string)50 void printInternal(PrintStream& out, const char* string)
51 {
52     out.printf("%s", string);
53 }
54 
printInternal(PrintStream & out,const CString & string)55 void printInternal(PrintStream& out, const CString& string)
56 {
57     out.print(string.data());
58 }
59 
printInternal(PrintStream & out,const String & string)60 void printInternal(PrintStream& out, const String& string)
61 {
62     out.print(string.utf8());
63 }
64 
printInternal(PrintStream & out,bool value)65 void printInternal(PrintStream& out, bool value)
66 {
67     if (value)
68         out.print("true");
69     else
70         out.print("false");
71 }
72 
printInternal(PrintStream & out,int value)73 void printInternal(PrintStream& out, int value)
74 {
75     out.printf("%d", value);
76 }
77 
printInternal(PrintStream & out,unsigned value)78 void printInternal(PrintStream& out, unsigned value)
79 {
80     out.printf("%u", value);
81 }
82 
printInternal(PrintStream & out,long value)83 void printInternal(PrintStream& out, long value)
84 {
85     out.printf("%ld", value);
86 }
87 
printInternal(PrintStream & out,unsigned long value)88 void printInternal(PrintStream& out, unsigned long value)
89 {
90     out.printf("%lu", value);
91 }
92 
printInternal(PrintStream & out,long long value)93 void printInternal(PrintStream& out, long long value)
94 {
95     out.printf("%lld", value);
96 }
97 
printInternal(PrintStream & out,unsigned long long value)98 void printInternal(PrintStream& out, unsigned long long value)
99 {
100     out.printf("%llu", value);
101 }
102 
printInternal(PrintStream & out,float value)103 void printInternal(PrintStream& out, float value)
104 {
105     out.print(static_cast<double>(value));
106 }
107 
printInternal(PrintStream & out,double value)108 void printInternal(PrintStream& out, double value)
109 {
110     out.printf("%lf", value);
111 }
112 
dumpCharacter(PrintStream & out,char value)113 void dumpCharacter(PrintStream& out, char value)
114 {
115     out.printf("%c", value);
116 }
117 
118 } // namespace WTF
119 
120