Index: base/win/iunknown_impl.h |
=================================================================== |
--- base/win/iunknown_impl.h (revision 0) |
+++ base/win/iunknown_impl.h (revision 0) |
@@ -0,0 +1,40 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef BASE_WIN_IUNKNOWN_IMPL_H_ |
+#define BASE_WIN_IUNKNOWN_IMPL_H_ |
+#pragma once |
+ |
+#include <unknwn.h> |
+ |
+#include "base/atomic_ref_count.h" |
+#include "base/base_export.h" |
+#include "base/compiler_specific.h" |
+#include "base/memory/scoped_ptr.h" |
+ |
+namespace base { |
+namespace win { |
+ |
+// IUnknown implementation for other classes to derive from. |
+class BASE_EXPORT IUnknownImpl : public IUnknown { |
+ public: |
+ IUnknownImpl(); |
+ |
+ virtual ULONG STDMETHODCALLTYPE AddRef() OVERRIDE; |
+ virtual ULONG STDMETHODCALLTYPE Release() OVERRIDE; |
+ |
+ // Subclasses should extend this to return any interfaces they provide. |
+ virtual STDMETHODIMP QueryInterface(REFIID riid, void** ppv) OVERRIDE; |
+ |
+ protected: |
+ virtual ~IUnknownImpl(); |
+ |
+ private: |
+ AtomicRefCount ref_count_; |
+}; |
+ |
+} // namespace win |
+} // namespace base |
+ |
+#endif // BASE_WIN_IUNKNOWN_IMPL_H_ |