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