MemoryBufferRef.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. #ifndef LLVM_SUPPORT_MEMORYBUFFERREF_H
  13. #define LLVM_SUPPORT_MEMORYBUFFERREF_H
  14. #include "llvm/ADT/StringRef.h"
  15. namespace llvm {
  16. class MemoryBuffer;
  17. class MemoryBufferRef {
  18. StringRef Buffer;
  19. StringRef Identifier;
  20. public:
  21. MemoryBufferRef() = default;
  22. MemoryBufferRef(const MemoryBuffer &Buffer);
  23. MemoryBufferRef(StringRef Buffer, StringRef Identifier)
  24. : Buffer(Buffer), Identifier(Identifier) {}
  25. StringRef getBuffer() const { return Buffer; }
  26. StringRef getBufferIdentifier() const { return Identifier; }
  27. const char *getBufferStart() const { return Buffer.begin(); }
  28. const char *getBufferEnd() const { return Buffer.end(); }
  29. size_t getBufferSize() const { return Buffer.size(); }
  30. /// Check pointer identity (not value) of identifier and data.
  31. friend bool operator==(const MemoryBufferRef &LHS,
  32. const MemoryBufferRef &RHS) {
  33. return LHS.Buffer.begin() == RHS.Buffer.begin() &&
  34. LHS.Buffer.end() == RHS.Buffer.end() &&
  35. LHS.Identifier.begin() == RHS.Identifier.begin() &&
  36. LHS.Identifier.end() == RHS.Identifier.end();
  37. }
  38. friend bool operator!=(const MemoryBufferRef &LHS,
  39. const MemoryBufferRef &RHS) {
  40. return !(LHS == RHS);
  41. }
  42. };
  43. } // namespace llvm
  44. #endif // LLVM_SUPPORT_MEMORYBUFFERREF_H