1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_WIN_IUNKNOWN_IMPL_H_
6 #define BASE_WIN_IUNKNOWN_IMPL_H_
10 #include "base/atomic_ref_count.h"
11 #include "base/base_export.h"
12 #include "base/compiler_specific.h"
17 // IUnknown implementation for other classes to derive from.
18 class BASE_EXPORT IUnknownImpl
: public IUnknown
{
22 virtual ULONG STDMETHODCALLTYPE
AddRef() override
;
23 virtual ULONG STDMETHODCALLTYPE
Release() override
;
25 // Subclasses should extend this to return any interfaces they provide.
26 virtual STDMETHODIMP
QueryInterface(REFIID riid
, void** ppv
) override
;
29 virtual ~IUnknownImpl();
32 AtomicRefCount ref_count_
;
38 #endif // BASE_WIN_IUNKNOWN_IMPL_H_