Home | History | Annotate | Download | only in CodeView
      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   return 0 == ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid));
     28 }
     29 
     30 inline bool operator<(const GUID &LHS, const GUID &RHS) {
     31   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
     56