// | |
// Copyright 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 |