diff options
| author | John Hodge <tpg@mutabah.net> | 2016-12-31 22:49:25 +0800 | 
|---|---|---|
| committer | John Hodge <tpg@mutabah.net> | 2016-12-31 22:49:25 +0800 | 
| commit | b2cea0a04b8da30865e98fd2d19e83af4867dc8a (patch) | |
| tree | 48699624fce592da41af92b92f21372fcfbbacfa /src/common.hpp | |
| parent | 6179f6637ccff6479e3d979abfc766f530bf0c49 (diff) | |
| download | mrust-b2cea0a04b8da30865e98fd2d19e83af4867dc8a.tar.gz | |
MIR Dump - Clean string printing
Diffstat (limited to 'src/common.hpp')
| -rw-r--r-- | src/common.hpp | 22 | 
1 files changed, 21 insertions, 1 deletions
| diff --git a/src/common.hpp b/src/common.hpp index d421e368..0b0fad14 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -289,7 +289,27 @@ inline ::std::ostream& operator<<(::std::ostream& os, const ::std::multimap<T,U,      return os;  } -} +}   // namespace std + +struct FmtEscaped { +    const char* s; +    FmtEscaped(const ::std::string& s): +        s(s.c_str()) +    {} +    friend ::std::ostream& operator<<(::std::ostream& os, const FmtEscaped& x) { +        for(auto s = x.s; *s != '\0'; s ++) +        { +            switch(*s) +            { +            case '\n':  os << "\\n";    break; +            case '\\':  os << "\\\\";   break; +            case '"':   os << "\\\"";   break; +            default:    os << *s;   break; +            } +        } +        return os; +    } +};  // -------------------------------------------------------------------  // --- Reversed iterable | 
