From cf1bb2f95d0924f95eeb3ab2b39b180e471f9434 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Mon, 22 Feb 2016 21:36:10 -0500 Subject: Mangle names --- src/encoding.cc | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'src/encoding.cc') diff --git a/src/encoding.cc b/src/encoding.cc index 620a821..3cd29a8 100644 --- a/src/encoding.cc +++ b/src/encoding.cc @@ -16,10 +16,13 @@ #include #include +#include #include #include #include +#include + namespace scoville { namespace { @@ -47,12 +50,10 @@ char ReadHexAsAscii(std::istringstream* const in) { bool IsVfatBadCharacter(const char c) noexcept { return (0 <= c && c < 0x20) || c == '*' || c == '?' || c == '<' || c == '>' || - c == '|' || c == '"' || c == ':' || c == '/' || c == '\\'; + c == '|' || c == '"' || c == ':' || c == '\\'; } -} // namespace - -void Encode(std::istringstream* const in, std::ostringstream* const out) { +void EncodeStream(std::istringstream* const in, std::ostringstream* const out) { char c; while (!in->get(c).eof()) { if (IsVfatBadCharacter(c)) { @@ -66,7 +67,7 @@ void Encode(std::istringstream* const in, std::ostringstream* const out) { } } -void Decode(std::istringstream* const in, std::ostringstream* const out) { +void DecodeStream(std::istringstream* const in, std::ostringstream* const out) { char c; while (!in->get(c).eof()) { if (c == '%') { @@ -82,4 +83,27 @@ void Decode(std::istringstream* const in, std::ostringstream* const out) { } } +std::string TransformString( + std::function f, + const std::string& in) { + std::istringstream in_stream(in); + std::ostringstream out_stream; + f(&in_stream, &out_stream); + return out_stream.str(); +} + +} // namespace + +std::string Encode(const std::string& in) { + const std::string result = TransformString(EncodeStream, in); + VLOG(1) << "Encode: \"" << in << "\" -> \"" << result << "\""; + return result; +} + +std::string Decode(const std::string& in) { + const std::string result = TransformString(DecodeStream, in); + VLOG(1) << "Decode: \"" << in << "\" -> \"" << result << "\""; + return result; +} + } // scoville -- cgit v1.2.3