diff options
Diffstat (limited to 'Source/ThirdParty/ANGLE/util/com_utils.h')
-rw-r--r-- | Source/ThirdParty/ANGLE/util/com_utils.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/util/com_utils.h b/Source/ThirdParty/ANGLE/util/com_utils.h new file mode 100644 index 000000000..225783c55 --- /dev/null +++ b/Source/ThirdParty/ANGLE/util/com_utils.h @@ -0,0 +1,28 @@ +// +// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// com_utils.h: Utility functions for working with COM objects + +#ifndef UTIL_COM_UTILS_H +#define UTIL_COM_UTILS_H + +template <typename outType> +inline outType *DynamicCastComObject(IUnknown *object) +{ + outType *outObject = nullptr; + HRESULT result = object->QueryInterface(__uuidof(outType), reinterpret_cast<void**>(&outObject)); + if (SUCCEEDED(result)) + { + return outObject; + } + else + { + SafeRelease(outObject); + return nullptr; + } +} + +#endif // UTIL_COM_UTILS_H |