Stop linking tcmalloc into shared library components.
[chromium-blink-merge.git] / base / win / iunknown_impl.h
blobff7e87039b0887312fef48874287abf0933b7656
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 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;
28 protected:
29 virtual ~IUnknownImpl();
31 private:
32 AtomicRefCount ref_count_;
35 } // namespace win
36 } // namespace base
38 #endif // BASE_WIN_IUNKNOWN_IMPL_H_