#ifndef ABSL_STRINGS_INTERNAL_CORD_REP_TEST_UTIL_H_
#define ABSL_STRINGS_INTERNAL_CORD_REP_TEST_UTIL_H_
#include <cassert>
#include <memory>
#include <random>
#include <string>
#include <vector>
#include "absl/base/config.h"
#include "absl/base/internal/raw_logging.h"
#include "absl/strings/internal/cord_internal.h"
#include "absl/strings/internal/cord_rep_btree.h"
#include "absl/strings/internal/cord_rep_flat.h"
#include "absl/strings/string_view.h"
namespace absl {
ABSL_NAMESPACE_BEGIN
namespace cordrep_testing {
inline cord_internal::CordRepSubstring* MakeSubstring(
size_t start, size_t len, cord_internal::CordRep* rep) { … }
inline cord_internal::CordRepFlat* MakeFlat(absl::string_view value) { … }
inline cord_internal::CordRepExternal* MakeExternal(absl::string_view s) { … }
inline std::string CreateRandomString(size_t n) { … }
inline std::vector<cord_internal::CordRep*> CreateFlatsFromString(
absl::string_view data, size_t chunk_size) { … }
inline cord_internal::CordRepBtree* CordRepBtreeFromFlats(
absl::Span<cord_internal::CordRep* const> flats) { … }
template <typename Fn>
inline void CordVisitReps(cord_internal::CordRep* rep, Fn&& fn) { … }
template <typename Predicate>
inline std::vector<cord_internal::CordRep*> CordCollectRepsIf(
Predicate&& predicate, cord_internal::CordRep* rep) { … }
inline std::vector<cord_internal::CordRep*> CordCollectReps(
cord_internal::CordRep* rep) { … }
inline void CordToString(cord_internal::CordRep* rep, std::string& s) { … }
inline std::string CordToString(cord_internal::CordRep* rep) { … }
class AutoUnref { … };
}
ABSL_NAMESPACE_END
}
#endif