diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-01-07 12:28:56 -0800 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-01-07 12:28:56 -0800 |
commit | a5c9431631c7305224c846e71b9c8f811c610f60 (patch) | |
tree | 5939c1cba8468eaa03e397efe1e6ac2f3763198e /testing/fx_string_testhelpers.cpp | |
parent | 22ee248278586790e9e748cbc2a01dacd39e6cf1 (diff) | |
download | pdfium-a5c9431631c7305224c846e71b9c8f811c610f60.tar.xz |
Merge to XFA: Add ostream helpers for FX String classes.
Original CL at https://codereview.chromium.org/837843002
TBR=brucedawson@chromium.org
Review URL: https://codereview.chromium.org/809313008
Diffstat (limited to 'testing/fx_string_testhelpers.cpp')
-rw-r--r-- | testing/fx_string_testhelpers.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/fx_string_testhelpers.cpp b/testing/fx_string_testhelpers.cpp new file mode 100644 index 0000000000..1ee705fa4c --- /dev/null +++ b/testing/fx_string_testhelpers.cpp @@ -0,0 +1,47 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "fx_string_testhelpers.h" + +#include <ios> +#include <iomanip> + +namespace { + +template <typename T> +std::ostream& output_string(std::ostream& out, const T& str) { + out << std::hex << std::setfill('0') << '"'; + for (size_t i = 0; i < str.GetLength(); ++i) { + unsigned int c = str.GetAt(i); + if (c >= 0x20 && c < 0x7F) { + out << static_cast<char>(c); + } else if (sizeof(typename T::value_type) == 1) { + out << "\\x" << std::setw(2) << c << std::setw(0); + } else if (c < 0x10000) { + out << "\\u" << std::setw(4) << c << std::setw(0); + } else { + out << "<invalid>"; + } + } + out << '"' << std::dec << std::setfill(' '); + return out; +} + +} // namespace + +std::ostream& operator<<(std::ostream& out, const CFX_ByteStringC& str) { + return output_string(out, str); +} + +std::ostream& operator<<(std::ostream& out, const CFX_ByteString& str) { + return output_string(out, str); +} + +std::ostream& operator<<(std::ostream& out, const CFX_WideStringC& str) { + return output_string(out, str); +} + +std::ostream& operator<<(std::ostream& out, const CFX_WideString& str) { + return output_string(out, str); +} |