| // Copyright 2017 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef QUICHE_SPDY_PLATFORM_API_SPDY_STRING_UTILS_H_ | |
| #define QUICHE_SPDY_PLATFORM_API_SPDY_STRING_UTILS_H_ | |
| #include <utility> | |
| // The following header file has to be included from at least | |
| // non-test file in order to avoid strange linking errors. | |
| // TODO(bnc): Remove this include as soon as it is included elsewhere in | |
| // non-test code. | |
| #include "net/third_party/quiche/src/spdy/platform/api/spdy_mem_slice.h" | |
| #include "net/third_party/quiche/src/spdy/platform/api/spdy_string.h" | |
| #include "net/third_party/quiche/src/spdy/platform/api/spdy_string_piece.h" | |
| #include "net/spdy/platform/impl/spdy_string_utils_impl.h" | |
| namespace spdy { | |
| template <typename... Args> | |
| inline SpdyString SpdyStrCat(const Args&... args) { | |
| return SpdyStrCatImpl(std::forward<const Args&>(args)...); | |
| } | |
| template <typename... Args> | |
| inline void SpdyStrAppend(SpdyString* output, const Args&... args) { | |
| SpdyStrAppendImpl(output, std::forward<const Args&>(args)...); | |
| } | |
| inline char SpdyHexDigitToInt(char c) { | |
| return SpdyHexDigitToIntImpl(c); | |
| } | |
| inline SpdyString SpdyHexDecode(SpdyStringPiece data) { | |
| return SpdyHexDecodeImpl(data); | |
| } | |
| inline bool SpdyHexDecodeToUInt32(SpdyStringPiece data, uint32_t* out) { | |
| return SpdyHexDecodeToUInt32Impl(data, out); | |
| } | |
| inline SpdyString SpdyHexEncode(const char* bytes, size_t size) { | |
| return SpdyHexEncodeImpl(bytes, size); | |
| } | |
| inline SpdyString SpdyHexEncodeUInt32AndTrim(uint32_t data) { | |
| return SpdyHexEncodeUInt32AndTrimImpl(data); | |
| } | |
| inline SpdyString SpdyHexDump(SpdyStringPiece data) { | |
| return SpdyHexDumpImpl(data); | |
| } | |
| } // namespace spdy | |
| #endif // QUICHE_SPDY_PLATFORM_API_SPDY_STRING_UTILS_H_ |