brintos

brintos / llvm-project-archived public Read only

0
0
Text · 881 B · 8f741a1 Raw
40 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -fms-extensions %s2// expected-no-diagnostics3typedef long HRESULT;4typedef unsigned long ULONG;5typedef struct _GUID {6  unsigned long Data1;7  unsigned short Data2;8  unsigned short Data3;9  unsigned char Data4[8];10} GUID;11typedef GUID IID;12 13// remove stdcall, since the warnings have nothing to do with14// what is being tested.15#define __stdcall16 17extern "C" {18extern "C++" {19struct __declspec(uuid("00000000-0000-0000-C000-000000000046"))20    IUnknown {21public:22  virtual HRESULT __stdcall QueryInterface(23      const IID &riid,24      void **ppvObject) = 0;25 26  virtual ULONG __stdcall AddRef(void) = 0;27 28  virtual ULONG __stdcall Release(void) = 0;29 30  template <class Q>31  HRESULT __stdcall QueryInterface(Q **pp) {32    return QueryInterface(__uuidof(Q), (void **)pp);33  }34};35}36}37 38__interface ISfFileIOPropertyPage : public IUnknown{};39 40