1//==- llvm/Support/Windows/COM.inc - Windows COM Implementation -*- 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// This file implements the Windows portion of COM support. 11// 12//===----------------------------------------------------------------------===// 13 14//===----------------------------------------------------------------------===// 15//=== WARNING: Implementation here must contain only Windows code. 16//===----------------------------------------------------------------------===// 17 18#include <objbase.h> 19 20namespace llvm { 21namespace sys { 22 23InitializeCOMRAII::InitializeCOMRAII(COMThreadingMode Threading, 24 bool SpeedOverMemory) { 25 DWORD Coinit = 0; 26 if (Threading == COMThreadingMode::SingleThreaded) 27 Coinit |= COINIT_APARTMENTTHREADED; 28 else 29 Coinit |= COINIT_MULTITHREADED; 30 if (SpeedOverMemory) 31 Coinit |= COINIT_SPEED_OVER_MEMORY; 32 ::CoInitializeEx(nullptr, Coinit); 33} 34 35InitializeCOMRAII::~InitializeCOMRAII() { ::CoUninitialize(); } 36} 37} 38