1283625Sdim//===- llvm/Support/COM.h ---------------------------------------*- C++ -*-===// 2283625Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6283625Sdim// 7283625Sdim//===----------------------------------------------------------------------===// 8283625Sdim/// \file 9283625Sdim/// 10283625Sdim/// Provides a library for accessing COM functionality of the Host OS. 11283625Sdim/// 12283625Sdim//===----------------------------------------------------------------------===// 13283625Sdim 14283625Sdim#ifndef LLVM_SUPPORT_COM_H 15283625Sdim#define LLVM_SUPPORT_COM_H 16283625Sdim 17283625Sdimnamespace llvm { 18283625Sdimnamespace sys { 19283625Sdim 20283625Sdimenum class COMThreadingMode { SingleThreaded, MultiThreaded }; 21283625Sdim 22283625Sdimclass InitializeCOMRAII { 23283625Sdimpublic: 24283625Sdim explicit InitializeCOMRAII(COMThreadingMode Threading, 25283625Sdim bool SpeedOverMemory = false); 26283625Sdim ~InitializeCOMRAII(); 27283625Sdim 28283625Sdimprivate: 29283625Sdim InitializeCOMRAII(const InitializeCOMRAII &) = delete; 30283625Sdim void operator=(const InitializeCOMRAII &) = delete; 31283625Sdim}; 32285181Sdim} 33285181Sdim} 34283625Sdim 35283625Sdim#endif 36