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
18namespace llvm {
19
20class MemoryBuffer;
21
22class MemoryBufferRef {
23 StringRef Buffer;
24 StringRef Identifier;
25
26public:
27 MemoryBufferRef() = default;
28 MemoryBufferRef(const MemoryBuffer &Buffer);
29 MemoryBufferRef(StringRef Buffer, StringRef Identifier)
30 : Buffer(Buffer), Identifier(Identifier) {}
31
32 StringRef getBuffer() const { return Buffer; }
33 StringRef getBufferIdentifier() const { return Identifier; }
34
35 const char *getBufferStart() const { return Buffer.begin(); }
36 const char *getBufferEnd() const { return Buffer.end(); }
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