source: doc/papers/OOPSLA17/evaluation/cpp-print.hpp @ ded6c2a6

ast-experimental
Last change on this file since ded6c2a6 was f4e3419d, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

restructure paper documents

  • Property mode set to 100644
File size: 802 bytes
RevLine 
[0d10090]1#pragma once
2#include <iomanip>
3#include <iostream>
[c87cd93]4#include "cpp-pair.hpp"
[0d10090]5
[a381b46]6template<typename T> void print(std::ostream& out, const T& x) { out << x; }
[0d10090]7
[a381b46]8template<> void print<bool>(std::ostream& out, const bool& x) { out << (x ? "true" : "false"); }
[0d10090]9
[a381b46]10template<> void print<char>(std::ostream& out, const char& x ) {
[0d10090]11        if ( 0x20 <= x && x <= 0x7E ) { out << "'" << x << "'"; }
12        else { out << "'\\" << std::hex << (unsigned int)x << std::setbase(0) << "'"; }
13}
14
[a381b46]15template<typename R, typename S> 
[c87cd93]16std::ostream& operator<< (std::ostream& out, const pair<R, S>& x) {
[0d10090]17        out << "[";
18        print(out, x.first);
19        out << ", ";
20        print(out, x.second);
21        return out << "]";
22}
23
[a381b46]24template<typename T, typename... Args> 
[0d10090]25void print(std::ostream& out, const T& arg, const Args&... rest) {
26        out << arg;
27        print(out, rest...);
28}
Note: See TracBrowser for help on using the repository browser.