1 //===- GUID.h ---------------------------------------------------*- 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 #ifndef LLVM_DEBUGINFO_CODEVIEW_GUID_H 10 #define LLVM_DEBUGINFO_CODEVIEW_GUID_H 11 12 #include <cstdint> 13 #include <cstring> 14 15 namespace llvm { 16 class raw_ostream; 17 18 namespace codeview { 19 20 /// This represents the 'GUID' type from windows.h. 21 struct GUID { 22 uint8_t Guid[16]; 23 }; 24 25 inline bool operator==(const GUID &LHS, const GUID &RHS) { 26 return 0 == ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)); 27 } 28 29 inline bool operator<(const GUID &LHS, const GUID &RHS) { 30 return ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)) < 0; 31 } 32 33 inline bool operator<=(const GUID &LHS, const GUID &RHS) { 34 return ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)) <= 0; 35 } 36 37 inline bool operator>(const GUID &LHS, const GUID &RHS) { 38 return !(LHS <= RHS); 39 } 40 41 inline bool operator>=(const GUID &LHS, const GUID &RHS) { 42 return !(LHS < RHS); 43 } 44 45 inline bool operator!=(const GUID &LHS, const GUID &RHS) { 46 return !(LHS == RHS); 47 } 48 49 raw_ostream &operator<<(raw_ostream &OS, const GUID &Guid); 50 51 } // namespace codeview 52 } // namespace llvm 53 54 #endif 55