| /* |
| * Copyright 2019 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkObjBase_DEFINED |
| #define SkObjBase_DEFINED |
| |
| #include "src/base/SkLeanWindows.h" |
| #include <objbase.h> |
| |
| // STDMETHOD uses COM_DECLSPEC_NOTHROW, but STDMETHODIMP does not. This leads to attribute mismatch |
| // between interfaces and implementations which produces warnings. In theory a COM component should |
| // never throw a c++ exception, but COM_DECLSPEC_NOTHROW allows tweaking that (as it may be useful |
| // for internal only implementations within a single project). The behavior of the attribute nothrow |
| // and the keyword noexcept are slightly different, so use COM_DECLSPEC_NOTHROW instead of noexcept. |
| // Older interfaces like IUnknown and IStream do not currently specify COM_DECLSPEC_NOTHROW, but it |
| // is not harmful to mark the implementation more exception strict than the interface. |
| |
| #define SK_STDMETHODIMP COM_DECLSPEC_NOTHROW STDMETHODIMP |
| #define SK_STDMETHODIMP_(type) COM_DECLSPEC_NOTHROW STDMETHODIMP_(type) |
| |
| #endif |