summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Windows/Windows.h
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2010-11-29 18:16:10 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2010-11-29 18:16:10 +0000
commit447762da858c1705c5fce5288f874797dc4b1135 (patch)
treeaa93dd9d52efdac9dc7f9560dc3054ef82375fbc /llvm/lib/Support/Windows/Windows.h
parent8aaf49959c209561a223ecf869af096730412389 (diff)
downloadbcm5719-llvm-447762da858c1705c5fce5288f874797dc4b1135.tar.gz
bcm5719-llvm-447762da858c1705c5fce5288f874797dc4b1135.zip
Merge System into Support.
llvm-svn: 120298
Diffstat (limited to 'llvm/lib/Support/Windows/Windows.h')
-rw-r--r--llvm/lib/Support/Windows/Windows.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/llvm/lib/Support/Windows/Windows.h b/llvm/lib/Support/Windows/Windows.h
new file mode 100644
index 00000000000..00a7e75fc2a
--- /dev/null
+++ b/llvm/lib/Support/Windows/Windows.h
@@ -0,0 +1,60 @@
+//===- Win32/Win32.h - Common Win32 Include File ----------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines things specific to Win32 implementations.
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only generic Win32 code that
+//=== is guaranteed to work on *all* Win32 variants.
+//===----------------------------------------------------------------------===//
+
+// Require at least Windows 2000 API.
+#define _WIN32_WINNT 0x0500
+#define _WIN32_IE 0x0500 // MinGW at it again.
+#define WIN32_LEAN_AND_MEAN
+
+#include "llvm/Config/config.h" // Get build system configuration settings
+#include <Windows.h>
+#include <ShlObj.h>
+#include <cassert>
+#include <string>
+
+inline bool MakeErrMsg(std::string* ErrMsg, const std::string& prefix) {
+ if (!ErrMsg)
+ return true;
+ char *buffer = NULL;
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL, GetLastError(), 0, (LPSTR)&buffer, 1, NULL);
+ *ErrMsg = prefix + buffer;
+ LocalFree(buffer);
+ return true;
+}
+
+class AutoHandle {
+ HANDLE handle;
+
+public:
+ AutoHandle(HANDLE h) : handle(h) {}
+
+ ~AutoHandle() {
+ if (handle)
+ CloseHandle(handle);
+ }
+
+ operator HANDLE() {
+ return handle;
+ }
+
+ AutoHandle &operator=(HANDLE h) {
+ handle = h;
+ return *this;
+ }
+};
OpenPOWER on IntegriCloud