• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2015-2016 The Khronos Group Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef SOURCE_PRINT_H_
16 #define SOURCE_PRINT_H_
17 
18 #include <iostream>
19 #include <sstream>
20 
21 namespace spvtools {
22 
23 // Wrapper for out stream selection.
24 class out_stream {
25  public:
out_stream()26   out_stream() : pStream(nullptr) {}
out_stream(std::stringstream & stream)27   explicit out_stream(std::stringstream& stream) : pStream(&stream) {}
28 
get()29   std::ostream& get() {
30     if (pStream) {
31       return *pStream;
32     }
33     return std::cout;
34   }
35 
36  private:
37   std::stringstream* pStream;
38 };
39 
40 namespace clr {
41 // Resets console color.
42 struct reset {
43   operator const char*();
44   bool isPrint;
45 };
46 // Sets console color to grey.
47 struct grey {
48   operator const char*();
49   bool isPrint;
50 };
51 // Sets console color to red.
52 struct red {
53   operator const char*();
54   bool isPrint;
55 };
56 // Sets console color to green.
57 struct green {
58   operator const char*();
59   bool isPrint;
60 };
61 // Sets console color to yellow.
62 struct yellow {
63   operator const char*();
64   bool isPrint;
65 };
66 // Sets console color to blue.
67 struct blue {
68   operator const char*();
69   bool isPrint;
70 };
71 }  // namespace clr
72 
73 }  // namespace spvtools
74 
75 #endif  // SOURCE_PRINT_H_
76