MemoryBufferRef.h 1.9 KB

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