mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2026-06-02 04:16:31 +03:00
47 lines
2.1 KiB
C++
47 lines
2.1 KiB
C++
// Copyright 2023 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef BASE_STRINGS_UTF_OSTREAM_OPERATORS_H_
|
|
#define BASE_STRINGS_UTF_OSTREAM_OPERATORS_H_
|
|
|
|
#include <iosfwd>
|
|
#include <string>
|
|
#include <string_view>
|
|
|
|
#include "base/base_export.h"
|
|
|
|
// Note that "The behavior of a C++ program is undefined if it adds declarations
|
|
// or definitions to namespace std or to a namespace within namespace std unless
|
|
// otherwise specified." --C++11[namespace.std]
|
|
//
|
|
// We've checked that this particular definition has the intended behavior on
|
|
// our implementations, but it's prone to breaking in the future, and please
|
|
// don't imitate this in your own definitions without checking with some
|
|
// standard library experts.
|
|
namespace std {
|
|
// These functions are provided as a convenience for logging, which is where we
|
|
// use streams (it is against Google style to use streams in other places). It
|
|
// is designed to allow you to emit non-ASCII Unicode strings to the log file,
|
|
// which is normally ASCII. It is relatively slow, so try not to use it for
|
|
// common cases. Non-ASCII characters will be converted to UTF-8 by these
|
|
// operators.
|
|
//
|
|
// The `std::basic_string<T>` overloads are necessary to allow logging types
|
|
// which are implicitly convertible to `std::basic_string<T>`. Simply taking
|
|
// `std::basic_string_view<T>` would not work because C++ only allows one
|
|
// implicit conversion.
|
|
BASE_EXPORT std::ostream& operator<<(std::ostream& out, const wchar_t* wstr);
|
|
BASE_EXPORT std::ostream& operator<<(std::ostream& out, std::wstring_view wstr);
|
|
BASE_EXPORT std::ostream& operator<<(std::ostream& out,
|
|
const std::wstring& wstr);
|
|
|
|
BASE_EXPORT std::ostream& operator<<(std::ostream& out, const char16_t* str16);
|
|
BASE_EXPORT std::ostream& operator<<(std::ostream& out,
|
|
std::u16string_view str16);
|
|
BASE_EXPORT std::ostream& operator<<(std::ostream& out,
|
|
const std::u16string& str16);
|
|
} // namespace std
|
|
|
|
#endif // BASE_STRINGS_UTF_OSTREAM_OPERATORS_H_
|