mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 20:40:11 +01:00
This modifies scripts/check_header_guards.py to add the CARBON_ prefix; everything else is pre-commit.
41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
#ifndef CARBON_EXPLORER_INTERPRETER_HEAP_ALLOCATION_INTERFACE_H_
|
|
#define CARBON_EXPLORER_INTERPRETER_HEAP_ALLOCATION_INTERFACE_H_
|
|
|
|
#include "explorer/common/arena.h"
|
|
#include "explorer/common/nonnull.h"
|
|
#include "explorer/interpreter/address.h"
|
|
|
|
namespace Carbon {
|
|
|
|
class Value;
|
|
|
|
// The allocation interface for Heap, factored out as an interface in order to
|
|
// resolve a layering issue. No other class should derive from this.
|
|
class HeapAllocationInterface {
|
|
public:
|
|
HeapAllocationInterface(const HeapAllocationInterface&) = delete;
|
|
auto operator=(const HeapAllocationInterface&)
|
|
-> HeapAllocationInterface& = delete;
|
|
|
|
// Put the given value on the heap and mark it as alive.
|
|
virtual auto AllocateValue(Nonnull<const Value*> v) -> AllocationId = 0;
|
|
|
|
// Marks this allocation, and all of its sub-objects, as dead.
|
|
virtual void Deallocate(AllocationId allocation) = 0;
|
|
|
|
// Returns the arena used to allocate the values in this heap.
|
|
virtual auto arena() const -> Arena& = 0;
|
|
|
|
protected:
|
|
HeapAllocationInterface() = default;
|
|
virtual ~HeapAllocationInterface() = default;
|
|
};
|
|
|
|
} // namespace Carbon
|
|
|
|
#endif // CARBON_EXPLORER_INTERPRETER_HEAP_ALLOCATION_INTERFACE_H_
|