Line data Source code
1 : //===- GUID.h ---------------------------------------------------*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 :
10 : #ifndef LLVM_DEBUGINFO_CODEVIEW_GUID_H
11 : #define LLVM_DEBUGINFO_CODEVIEW_GUID_H
12 :
13 : #include <cstdint>
14 : #include <cstring>
15 :
16 : namespace llvm {
17 : class raw_ostream;
18 :
19 : namespace codeview {
20 :
21 : /// This represents the 'GUID' type from windows.h.
22 : struct GUID {
23 : uint8_t Guid[16];
24 : };
25 :
26 : inline bool operator==(const GUID &LHS, const GUID &RHS) {
27 4 : return 0 == ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid));
28 : }
29 :
30 : inline bool operator<(const GUID &LHS, const GUID &RHS) {
31 9 : return ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)) < 0;
32 : }
33 :
34 : inline bool operator<=(const GUID &LHS, const GUID &RHS) {
35 : return ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)) <= 0;
36 : }
37 :
38 : inline bool operator>(const GUID &LHS, const GUID &RHS) {
39 : return !(LHS <= RHS);
40 : }
41 :
42 : inline bool operator>=(const GUID &LHS, const GUID &RHS) {
43 : return !(LHS < RHS);
44 : }
45 :
46 : inline bool operator!=(const GUID &LHS, const GUID &RHS) {
47 : return !(LHS == RHS);
48 : }
49 :
50 : raw_ostream &operator<<(raw_ostream &OS, const GUID &Guid);
51 :
52 : } // namespace codeview
53 : } // namespace llvm
54 :
55 : #endif
|