1 //===- MemoryBufferRef.h - Memory Buffer Reference --------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file defines the MemoryBuffer interface. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_SUPPORT_MEMORYBUFFERREF_H 14 #define LLVM_SUPPORT_MEMORYBUFFERREF_H 15 16 #include "llvm/ADT/StringRef.h" 17 18 namespace llvm { 19 20 class MemoryBuffer; 21 22 class MemoryBufferRef { 23 StringRef Buffer; 24 StringRef Identifier; 25 26 public: 27 MemoryBufferRef() = default; 28 MemoryBufferRef(const MemoryBuffer &Buffer); MemoryBufferRef(StringRef Buffer,StringRef Identifier)29 MemoryBufferRef(StringRef Buffer, StringRef Identifier) 30 : Buffer(Buffer), Identifier(Identifier) {} 31 getBuffer()32 StringRef getBuffer() const { return Buffer; } getBufferIdentifier()33 StringRef getBufferIdentifier() const { return Identifier; } 34 getBufferStart()35 const char *getBufferStart() const { return Buffer.begin(); } getBufferEnd()36 const char *getBufferEnd() const { return Buffer.end(); } getBufferSize()37 size_t getBufferSize() const { return Buffer.size(); } 38 39 /// Check pointer identity (not value) of identifier and data. 40 friend bool operator==(const MemoryBufferRef &LHS, 41 const MemoryBufferRef &RHS) { 42 return LHS.Buffer.begin() == RHS.Buffer.begin() && 43 LHS.Buffer.end() == RHS.Buffer.end() && 44 LHS.Identifier.begin() == RHS.Identifier.begin() && 45 LHS.Identifier.end() == RHS.Identifier.end(); 46 } 47 48 friend bool operator!=(const MemoryBufferRef &LHS, 49 const MemoryBufferRef &RHS) { 50 return !(LHS == RHS); 51 } 52 }; 53 54 } // namespace llvm 55 56 #endif // LLVM_SUPPORT_MEMORYBUFFERREF_H 57