Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: src/ostreams.h

Issue 859773002: Unobscurified OFStream. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Yet another static_cast for MSVC... Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/ostreams.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_OSTREAMS_H_ 5 #ifndef V8_OSTREAMS_H_
6 #define V8_OSTREAMS_H_ 6 #define V8_OSTREAMS_H_
7 7
8 #include <cstddef> 8 #include <cstddef>
9 #include <cstdio> 9 #include <cstdio>
10 #include <cstring> 10 #include <cstring>
11 #include <ostream> // NOLINT 11 #include <ostream> // NOLINT
12 #include <streambuf> 12 #include <streambuf>
13 13
14 #include "include/v8config.h" 14 #include "include/v8config.h"
15 #include "src/base/macros.h" 15 #include "src/base/macros.h"
16 16
17 namespace v8 { 17 namespace v8 {
18 namespace internal { 18 namespace internal {
19 19
20
20 class OFStreamBase : public std::streambuf { 21 class OFStreamBase : public std::streambuf {
21 protected: 22 public:
22 explicit OFStreamBase(FILE* f); 23 explicit OFStreamBase(FILE* f);
23 virtual ~OFStreamBase(); 24 virtual ~OFStreamBase();
24 25
25 int_type sync() FINAL; 26 protected:
26 int_type overflow(int_type c) FINAL;
27
28 private:
29 FILE* const f_; 27 FILE* const f_;
30 28
31 DISALLOW_COPY_AND_ASSIGN(OFStreamBase); 29 virtual int sync();
30 virtual int_type overflow(int_type c);
31 virtual std::streamsize xsputn(const char* s, std::streamsize n);
32 }; 32 };
33 33
34 34
35 // An output stream writing to a file. 35 // An output stream writing to a file.
36 class OFStream FINAL : private virtual OFStreamBase, public std::ostream { 36 class OFStream : public std::ostream {
37 public: 37 public:
38 explicit OFStream(FILE* f); 38 explicit OFStream(FILE* f);
39 ~OFStream(); 39 ~OFStream();
40 40
41 private: 41 private:
42 DISALLOW_COPY_AND_ASSIGN(OFStream); 42 OFStreamBase buf_;
43 }; 43 };
44 44
45 45
46 // Wrappers to disambiguate uint16_t and uc16. 46 // Wrappers to disambiguate uint16_t and uc16.
47 struct AsUC16 { 47 struct AsUC16 {
48 explicit AsUC16(uint16_t v) : value(v) {} 48 explicit AsUC16(uint16_t v) : value(v) {}
49 uint16_t value; 49 uint16_t value;
50 }; 50 };
51 51
52 52
53 struct AsReversiblyEscapedUC16 { 53 struct AsReversiblyEscapedUC16 {
54 explicit AsReversiblyEscapedUC16(uint16_t v) : value(v) {} 54 explicit AsReversiblyEscapedUC16(uint16_t v) : value(v) {}
55 uint16_t value; 55 uint16_t value;
56 }; 56 };
57 57
58 58
59 // Writes the given character to the output escaping everything outside of 59 // Writes the given character to the output escaping everything outside of
60 // printable/space ASCII range. Additionally escapes '\' making escaping 60 // printable/space ASCII range. Additionally escapes '\' making escaping
61 // reversible. 61 // reversible.
62 std::ostream& operator<<(std::ostream& os, const AsReversiblyEscapedUC16& c); 62 std::ostream& operator<<(std::ostream& os, const AsReversiblyEscapedUC16& c);
63 63
64 // Writes the given character to the output escaping everything outside 64 // Writes the given character to the output escaping everything outside
65 // of printable ASCII range. 65 // of printable ASCII range.
66 std::ostream& operator<<(std::ostream& os, const AsUC16& c); 66 std::ostream& operator<<(std::ostream& os, const AsUC16& c);
67 67
68 } // namespace internal 68 } // namespace internal
69 } // namespace v8 69 } // namespace v8
70 70
71 #endif // V8_OSTREAMS_H_ 71 #endif // V8_OSTREAMS_H_
OLDNEW
« no previous file with comments | « no previous file | src/ostreams.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698