Home | History | Annotate | Download | only in win
      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.
      4 
      5 #ifndef BASE_WIN_IUNKNOWN_IMPL_H_
      6 #define BASE_WIN_IUNKNOWN_IMPL_H_
      7 
      8 #include <unknwn.h>
      9 
     10 #include "base/atomic_ref_count.h"
     11 #include "base/base_export.h"
     12 #include "base/compiler_specific.h"
     13 
     14 namespace base {
     15 namespace win {
     16 
     17 // IUnknown implementation for other classes to derive from.
     18 class BASE_EXPORT IUnknownImpl : public IUnknown {
     19  public:
     20   IUnknownImpl();
     21 
     22   virtual ULONG STDMETHODCALLTYPE AddRef() OVERRIDE;
     23   virtual ULONG STDMETHODCALLTYPE Release() OVERRIDE;
     24 
     25   // Subclasses should extend this to return any interfaces they provide.
     26   virtual STDMETHODIMP QueryInterface(REFIID riid, void** ppv) OVERRIDE;
     27 
     28  protected:
     29   virtual ~IUnknownImpl();
     30 
     31  private:
     32   AtomicRefCount ref_count_;
     33 };
     34 
     35 }  // namespace win
     36 }  // namespace base
     37 
     38 #endif  // BASE_WIN_IUNKNOWN_IMPL_H_
     39