xref: /llvm-project/llvm/include/llvm/Support/COM.h (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
1c2055701SZachary Turner //===- llvm/Support/COM.h ---------------------------------------*- C++ -*-===//
2c2055701SZachary Turner //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6c2055701SZachary Turner //
7c2055701SZachary Turner //===----------------------------------------------------------------------===//
8c2055701SZachary Turner /// \file
9c2055701SZachary Turner ///
10c2055701SZachary Turner /// Provides a library for accessing COM functionality of the Host OS.
11c2055701SZachary Turner ///
12c2055701SZachary Turner //===----------------------------------------------------------------------===//
13c2055701SZachary Turner 
14c2055701SZachary Turner #ifndef LLVM_SUPPORT_COM_H
15c2055701SZachary Turner #define LLVM_SUPPORT_COM_H
16c2055701SZachary Turner 
17c2055701SZachary Turner namespace llvm {
18c2055701SZachary Turner namespace sys {
19c2055701SZachary Turner 
20c2055701SZachary Turner enum class COMThreadingMode { SingleThreaded, MultiThreaded };
21c2055701SZachary Turner 
22c2055701SZachary Turner class InitializeCOMRAII {
23c2055701SZachary Turner public:
24c2055701SZachary Turner   explicit InitializeCOMRAII(COMThreadingMode Threading,
25c2055701SZachary Turner                              bool SpeedOverMemory = false);
26c2055701SZachary Turner   ~InitializeCOMRAII();
27c2055701SZachary Turner 
28c2055701SZachary Turner private:
29c2055701SZachary Turner   InitializeCOMRAII(const InitializeCOMRAII &) = delete;
30c2055701SZachary Turner   void operator=(const InitializeCOMRAII &) = delete;
31c2055701SZachary Turner };
32f00654e3SAlexander Kornienko }
33f00654e3SAlexander Kornienko }
34c2055701SZachary Turner 
35c2055701SZachary Turner #endif
36