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