1//===-- AutoHandle.h --------------------------------------------*- 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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_lldb_Host_windows_AutoHandle_h_
10#define LLDB_lldb_Host_windows_AutoHandle_h_
11
12#include "lldb/Host/windows/windows.h"
13
14namespace lldb_private {
15
16class AutoHandle {
17public:
18 AutoHandle(HANDLE handle, HANDLE invalid_value = INVALID_HANDLE_VALUE)
19 : m_handle(handle), m_invalid_value(invalid_value) {}
20
21 ~AutoHandle() {
22 if (m_handle != m_invalid_value)
23 ::CloseHandle(m_handle);
24 }
25
26 bool IsValid() const { return m_handle != m_invalid_value; }
27
28 HANDLE get() const { return m_handle; }
29
30private:
31 HANDLE m_handle;
32 HANDLE m_invalid_value;
33};
34}
35
36#endif
37

source code of lldb/include/lldb/Host/windows/AutoHandle.h