brintos

brintos / llvm-project-archived public Read only

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