P4C
The P4 Compiler
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
escape.h
1
17
18#ifndef BACKENDS_TOFINO_BF_ASM_ESCAPE_H_
19#define BACKENDS_TOFINO_BF_ASM_ESCAPE_H_
20
21#include <iomanip>
22#include <iostream>
23
24#include "lib/hex.h"
25
26class escape {
27 std::string str;
28
29 public:
30 explicit escape(const std::string &s) : str(s) {}
31 friend std::ostream &operator<<(std::ostream &os, escape e);
32};
33
34inline std::ostream &operator<<(std::ostream &os, escape e) {
35 for (char ch : e.str) {
36 switch (ch) {
37 case '\n':
38 os << "\\n";
39 break;
40 case '\t':
41 os << "\\t";
42 break;
43 case '\\':
44 os << "\\\\";
45 break;
46 default:
47 if (ch < 32 || ch >= 127)
48 os << "\\x" << hex(ch & 0xff, 2, '0');
49 else
50 os << ch;
51 }
52 }
53 return os;
54}
55
56#endif /* BACKENDS_TOFINO_BF_ASM_ESCAPE_H_ */
Definition escape.h:26