//===- llvm/Support/Memory.h - Memory Support -------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file declares the llvm::sys::Memory class. // //===----------------------------------------------------------------------===// #ifndef LLVM_SUPPORT_MEMORY_H #define LLVM_SUPPORT_MEMORY_H #include "llvm/Support/DataTypes.h" #include <system_error> namespace llvm { // Forward declare raw_ostream: it is used for debug dumping below. class raw_ostream; namespace sys { /// This class encapsulates the notion of a memory block which has an address /// and a size. It is used by the Memory class (a friend) as the result of /// various memory allocation operations. /// @see Memory /// Memory block abstraction. class MemoryBlock { … }; /// This class provides various memory handling functions that manipulate /// MemoryBlock instances. /// @since 1.4 /// An abstraction for memory operations. class Memory { … }; /// Owning version of MemoryBlock. class OwningMemoryBlock { … }; #ifndef NDEBUG /// Debugging output for Memory::ProtectionFlags. raw_ostream &operator<<(raw_ostream &OS, const Memory::ProtectionFlags &PF); /// Debugging output for MemoryBlock. raw_ostream &operator<<(raw_ostream &OS, const MemoryBlock &MB); #endif // ifndef NDEBUG } // end namespace sys } // end namespace llvm #endif