aosp12/external/angle/util/com_utils.h

30 lines
695 B
C++

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