1926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/* 2926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2012 Apple Inc. All rights reserved. 3926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 4926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * modification, are permitted provided that the following conditions 6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * are met: 7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 9926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 11926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * documentation and/or other materials provided with the distribution. 12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 13926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 25926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 26926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "config.h" 27926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "PrintStream.h" 28926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 29926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include <stdio.h> 30591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/text/CString.h" 31591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/text/WTFString.h" 32926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 33926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)namespace WTF { 34926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 35926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)PrintStream::PrintStream() { } 36926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)PrintStream::~PrintStream() { } // Force the vtable to be in this module 37926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 38926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void PrintStream::printf(const char* format, ...) 39926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 40926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) va_list argList; 41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) va_start(argList, format); 42926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) vprintf(format, argList); 43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) va_end(argList); 44926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 46926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void PrintStream::flush() 47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, const char* string) 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%s", string); 53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, const CString& string) 56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.print(string.data()); 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, const String& string) 61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.print(string.utf8()); 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, bool value) 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (value) 68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.print("true"); 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else 70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.print("false"); 71926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, int value) 74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%d", value); 76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, unsigned value) 79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%u", value); 81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, long value) 84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%ld", value); 86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, unsigned long value) 89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 90926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%lu", value); 91926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 92926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, long long value) 94926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 95926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%lld", value); 96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 97926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, unsigned long long value) 99926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%llu", value); 101926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 102926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 103926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, float value) 104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.print(static_cast<double>(value)); 106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 107926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void printInternal(PrintStream& out, double value) 109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%lf", value); 111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void dumpCharacter(PrintStream& out, char value) 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) out.printf("%c", value); 116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} // namespace WTF 119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 120