Roll src/third_party/WebKit 57aef96:a1089e6 (svn 201978:201979)
[chromium-blink-merge.git] / base / win / iunknown_impl.h
blobb7de205ac6cdcd52d02d6118e81c2de02739d48d
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_
8 #include <unknwn.h>
10 #include "base/atomic_ref_count.h"
11 #include "base/base_export.h"
12 #include "base/compiler_specific.h"
14 namespace base {
15 namespace win {
17 // IUnknown implementation for other classes to derive from.
18 class BASE_EXPORT IUnknownImpl : public IUnknown {
19 public:
20 IUnknownImpl();
22 ULONG STDMETHODCALLTYPE AddRef() override;
23 ULONG STDMETHODCALLTYPE Release() override;
25 // Subclasses should extend this to return any interfaces they provide.
26 STDMETHODIMP QueryInterface(REFIID riid, void** ppv) override;
28 protected:
29 virtual ~IUnknownImpl();
31 private:
32 AtomicRefCount ref_count_;
35 } // namespace win
36 } // namespace base
38 #endif // BASE_WIN_IUNKNOWN_IMPL_H_