blob: 3c39cd4b0eaf26f8dc986bf36a233c4c1df50ac9 [file] [log] [blame]
// Copyright 2021 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_COMMON_PRINT_ELEMENTS_H_
#define QUICHE_COMMON_PRINT_ELEMENTS_H_
#include <ostream>
#include <sstream>
#include <string>
#include "quiche/common/platform/api/quiche_export.h"
namespace quiche {
// Print elements of any iterable container that has cbegin() and cend() methods
// and the elements have operator<<(ostream) override.
template <typename T>
QUICHE_NO_EXPORT inline std::string PrintElements(const T& container) {
std::stringstream debug_string;
debug_string << "{";
auto it = container.cbegin();
if (it != container.cend()) {
debug_string << *it;
++it;
while (it != container.cend()) {
debug_string << ", " << *it;
++it;
}
}
debug_string << "}";
return debug_string.str();
}
} // namespace quiche
#endif // QUICHE_COMMON_PRINT_ELEMENTS_H_