For future reference:
(1) It's a bad idea to move something to a different file and edit it
    at the same time
(2) Those constructor parameters really should be optional.
    The interface was trivial before, and it's a good idea to keep it
    that way. (I'm really only saying this because it broke the
    additional tests I had in my working copy :D)

On 2015-06-08 13:05, akha...@svn.reactos.org wrote:
> Added: trunk/rostests/apitests/include/unknownbase.h
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/include/unknownbase.h?rev=68069
> ==============================================================================
> --- trunk/rostests/apitests/include/unknownbase.h     (added)
> +++ trunk/rostests/apitests/include/unknownbase.h     [iso-8859-1] Mon Jun  8 
> 11:05:35 2015
> @@ -0,0 +1,47 @@
> +#ifndef APITESTS_UNKNOWNBASE_H
> +#define APITESTS_UNKNOWNBASE_H
> +
> +template<typename Interface>
> +class CUnknownBase : public Interface
> +{
> +    LONG m_lRef;
> +    bool m_AutoDelete;
> +protected:
> +    virtual const QITAB* GetQITab() = 0;
> +public:
> +
> +    CUnknownBase(bool autoDelete, LONG initialRef)
> +        : m_lRef(initialRef),
> +        m_AutoDelete(autoDelete)
> +    {
> +    }
> +
> +   ULONG STDMETHODCALLTYPE AddRef ()
> +   {
> +       return InterlockedIncrement( &m_lRef );
> +   }
> +
> +   ULONG STDMETHODCALLTYPE Release()
> +   {
> +       long newref = InterlockedDecrement( &m_lRef );
> +       if (m_AutoDelete && newref<=0)
> +       {
> +           delete this;
> +       }
> +       return newref;
> +   }
> +
> +    HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppv)
> +    {
> +        return QISearch(this, GetQITab(), riid, ppv);
> +    }
> +
> +    virtual ~CUnknownBase() {}
> +
> +    LONG GetRef() const
> +    {
> +        return m_lRef;
> +    }
> +};
> +
> +#endif // APITESTS_UNKNOWNBASE_H


_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to