blob: bd9d5cf1476a76d71f41a1d42c184be0bcb8136e [file] [log] [blame]
// Copyright 2021 The Fuchsia 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 SRC_LIB_FIDL_LLCPP_TESTS_ARENA_CHECKER_H_
#define SRC_LIB_FIDL_LLCPP_TESTS_ARENA_CHECKER_H_
#include <lib/fidl/cpp/wire/arena.h>
namespace fidl_testing {
class ArenaChecker {
public:
template <size_t kInitialCapacity>
static bool IsPointerInArena(const void* pointer, ::fidl::Arena<kInitialCapacity>& arena) {
return IsPointerInArena(pointer, arena, arena.initial_buffer_, kInitialCapacity);
}
// Returns if the arena was used to allocate any buffer at all.
template <size_t kInitialCapacity>
static bool DidUse(::fidl::Arena<kInitialCapacity>& arena) {
return DidUse(arena, arena.initial_buffer_);
}
private:
static bool IsPointerInArena(const void* pointer, ::fidl::ArenaBase& arena,
const uint8_t* initial_buffer, size_t initial_capacity);
static bool DidUse(::fidl::ArenaBase& arena, const uint8_t* initial_buffer);
};
} // namespace fidl_testing
#endif // SRC_LIB_FIDL_LLCPP_TESTS_ARENA_CHECKER_H_