Author: gedmurphy
Date: Tue Feb 23 19:31:38 2016
New Revision: 70776

URL: http://svn.reactos.org/svn/reactos?rev=70776&view=rev
Log:
[ATL]
- Move CComBSTR and CComPtr to atlcomcli.h
- Patch from Mark Jansen
CORE-10610[ATL]
- Move CComBSTR and CComPtr to atlcomcli.h
- Patch from Mark Jansen
CORE-10610


Added:
    trunk/reactos/lib/atl/atlcomcli.h   (with props)
Modified:
    trunk/reactos/lib/atl/atlbase.h

Modified: trunk/reactos/lib/atl/atlbase.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/atl/atlbase.h?rev=70776&r1=70775&r2=70776&view=diff
==============================================================================
--- trunk/reactos/lib/atl/atlbase.h     [iso-8859-1] (original)
+++ trunk/reactos/lib/atl/atlbase.h     [iso-8859-1] Tue Feb 23 19:31:38 2016
@@ -22,6 +22,7 @@
 
 #include "atlcore.h"
 #include "statreg.h"
+#include "atlcomcli.h"
 
 #ifdef _MSC_VER
 // It is common to use this in ATL constructors. They only store this for 
later use, so the usage is safe.
@@ -816,100 +817,6 @@
 
 extern CAtlWinModule _AtlWinModule;
 
-template<class T>
-class CComPtr
-{
-public:
-    T *p;
-public:
-    CComPtr()
-    {
-        p = NULL;
-    }
-
-    CComPtr(T *lp)
-    {
-        p = lp;
-        if (p != NULL)
-            p->AddRef();
-    }
-
-    CComPtr(const CComPtr<T> &lp)
-    {
-        p = lp.p;
-        if (p != NULL)
-            p->AddRef();
-    }
-
-    ~CComPtr()
-    {
-        if (p != NULL)
-            p->Release();
-    }
-
-    T *operator = (T *lp)
-    {
-        if (p != NULL)
-            p->Release();
-        p = lp;
-        if (p != NULL)
-            p->AddRef();
-        return *this;
-    }
-
-    T *operator = (const CComPtr<T> &lp)
-    {
-        if (p != NULL)
-            p->Release();
-        p = lp.p;
-        if (p != NULL)
-            p->AddRef();
-        return *this;
-    }
-
-    void Release()
-    {
-        if (p != NULL)
-        {
-            p->Release();
-            p = NULL;
-        }
-    }
-
-    void Attach(T *lp)
-    {
-        if (p != NULL)
-            p->Release();
-        p = lp;
-    }
-
-    T *Detach()
-    {
-        T *saveP;
-
-        saveP = p;
-        p = NULL;
-        return saveP;
-    }
-
-    T **operator & ()
-    {
-        ATLASSERT(p == NULL);
-        return &p;
-    }
-
-    operator T * ()
-    {
-        return p;
-    }
-
-    T *operator -> ()
-    {
-        ATLASSERT(p != NULL);
-        return p;
-    }
-};
-
 
 // TODO: When someone needs it, make the allocator a template, so you can use 
it for both
 //       CoTask* allocations, and CRT-like allocations (malloc, realloc, free)
@@ -997,154 +904,6 @@
     T *m_Data;
 };
 
-
-class CComBSTR
-{
-public:
-    BSTR m_str;
-public:
-    CComBSTR() :
-        m_str(NULL)
-    {
-    }
-
-    CComBSTR(LPCOLESTR pSrc)
-    {
-        if (pSrc == NULL)
-            m_str = NULL;
-        else
-            m_str = ::SysAllocString(pSrc);
-    }
-
-    CComBSTR(int length)
-    {
-        if (length == 0)
-            m_str = NULL;
-        else
-            m_str = ::SysAllocStringLen(NULL, length);
-    }
-
-    CComBSTR(int length, LPCOLESTR pSrc)
-    {
-        if (length == 0)
-            m_str = NULL;
-        else
-            m_str = ::SysAllocStringLen(pSrc, length);
-    }
-
-    CComBSTR(PCSTR pSrc)
-    {
-        if (pSrc)
-        {
-            int len = MultiByteToWideChar(CP_THREAD_ACP, 0, pSrc, -1, NULL, 0);
-            m_str = ::SysAllocStringLen(NULL, len - 1);
-            if (m_str)
-            {
-                int res = MultiByteToWideChar(CP_THREAD_ACP, 0, pSrc, -1, 
m_str, len);
-                ATLASSERT(res == len);
-                if (res != len)
-                {
-                    ::SysFreeString(m_str);
-                    m_str = NULL;
-                }
-            }
-        }
-        else
-        {
-            m_str = NULL;
-        }
-    }
-
-    CComBSTR(const CComBSTR &other)
-    {
-        m_str = other.Copy();
-    }
-
-    CComBSTR(REFGUID guid)
-    {
-        OLECHAR szGuid[40];
-        ::StringFromGUID2(guid, szGuid, 40);
-        m_str = ::SysAllocString(szGuid);
-    }
-
-    ~CComBSTR()
-    {
-        ::SysFreeString(m_str);
-        m_str = NULL;
-    }
-
-    operator BSTR () const
-    {
-        return m_str;
-    }
-
-    BSTR *operator & ()
-    {
-        return &m_str;
-    }
-
-    CComBSTR &operator = (const CComBSTR &other)
-    {
-        ::SysFreeString(m_str);
-        m_str = other.Copy();
-        return *this;
-    }
-
-    BSTR Copy() const
-    {
-        if (!m_str)
-            return NULL;
-        return ::SysAllocStringLen(m_str, ::SysStringLen(m_str));
-    }
-
-    HRESULT CopyTo(BSTR *other) const
-    {
-        if (!other)
-            return E_POINTER;
-        *other = Copy();
-        return S_OK;
-    }
-
-    bool LoadString(HMODULE module, DWORD uID)
-    {
-        ::SysFreeString(m_str);
-        m_str = NULL;
-        const wchar_t *ptr = NULL;
-        int len = ::LoadStringW(module, uID, (PWSTR)&ptr, 0);
-        if (len)
-            m_str = ::SysAllocStringLen(ptr, len);
-        return m_str != NULL;
-    }
-
-    unsigned int Length() const
-    {
-        return ::SysStringLen(m_str);
-    }
-
-    unsigned int ByteLength() const
-    {
-        return ::SysStringByteLen(m_str);
-    }
-};
-
-class CComVariant : public tagVARIANT
-{
-public:
-    CComVariant()
-    {
-        ::VariantInit(this);
-    }
-
-    ~CComVariant()
-    {
-        Clear();
-    }
-
-    HRESULT Clear()
-    {
-        return ::VariantClear(this);
-    }
-};
 
 inline HRESULT __stdcall AtlAdvise(IUnknown *pUnkCP, IUnknown *pUnk, const IID 
&iid, LPDWORD pdw)
 {

Added: trunk/reactos/lib/atl/atlcomcli.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/atl/atlcomcli.h?rev=70776
==============================================================================
--- trunk/reactos/lib/atl/atlcomcli.h   (added)
+++ trunk/reactos/lib/atl/atlcomcli.h   [iso-8859-1] Tue Feb 23 19:31:38 2016
@@ -0,0 +1,308 @@
+/*
+ * ReactOS ATL
+ *
+ * Copyright 2009 Andrew Hill <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  
USA
+ */
+
+#pragma once
+
+#include "atlcore.h"
+
+
+#ifdef _MSC_VER
+// It is common to use this in ATL constructors. They only store this for 
later use, so the usage is safe.
+#pragma warning(disable:4355)
+#endif
+
+#ifndef _ATL_PACKING
+#define _ATL_PACKING 8
+#endif
+
+#ifndef _ATL_FREE_THREADED
+#ifndef _ATL_APARTMENT_THREADED
+#ifndef _ATL_SINGLE_THREADED
+#define _ATL_FREE_THREADED
+#endif
+#endif
+#endif
+
+#ifndef ATLTRY
+#define ATLTRY(x) x;
+#endif
+
+#ifdef _ATL_DISABLE_NO_VTABLE
+#define ATL_NO_VTABLE
+#else
+#define ATL_NO_VTABLE __declspec(novtable)
+#endif
+
+namespace ATL
+{
+
+
+template<class T>
+class CComPtr
+{
+public:
+    T *p;
+public:
+    CComPtr()
+    {
+        p = NULL;
+    }
+
+    CComPtr(T *lp)
+    {
+        p = lp;
+        if (p != NULL)
+            p->AddRef();
+    }
+
+    CComPtr(const CComPtr<T> &lp)
+    {
+        p = lp.p;
+        if (p != NULL)
+            p->AddRef();
+    }
+
+    ~CComPtr()
+    {
+        if (p != NULL)
+            p->Release();
+    }
+
+    T *operator = (T *lp)
+    {
+        if (p != NULL)
+            p->Release();
+        p = lp;
+        if (p != NULL)
+            p->AddRef();
+        return *this;
+    }
+
+    T *operator = (const CComPtr<T> &lp)
+    {
+        if (p != NULL)
+            p->Release();
+        p = lp.p;
+        if (p != NULL)
+            p->AddRef();
+        return *this;
+    }
+
+    void Release()
+    {
+        if (p != NULL)
+        {
+            p->Release();
+            p = NULL;
+        }
+    }
+
+    void Attach(T *lp)
+    {
+        if (p != NULL)
+            p->Release();
+        p = lp;
+    }
+
+    T *Detach()
+    {
+        T *saveP;
+
+        saveP = p;
+        p = NULL;
+        return saveP;
+    }
+
+    T **operator & ()
+    {
+        ATLASSERT(p == NULL);
+        return &p;
+    }
+
+    operator T * ()
+    {
+        return p;
+    }
+
+    T *operator -> ()
+    {
+        ATLASSERT(p != NULL);
+        return p;
+    }
+};
+
+
+class CComBSTR
+{
+public:
+    BSTR m_str;
+public:
+    CComBSTR() :
+        m_str(NULL)
+    {
+    }
+
+    CComBSTR(LPCOLESTR pSrc)
+    {
+        if (pSrc == NULL)
+            m_str = NULL;
+        else
+            m_str = ::SysAllocString(pSrc);
+    }
+
+    CComBSTR(int length)
+    {
+        if (length == 0)
+            m_str = NULL;
+        else
+            m_str = ::SysAllocStringLen(NULL, length);
+    }
+
+    CComBSTR(int length, LPCOLESTR pSrc)
+    {
+        if (length == 0)
+            m_str = NULL;
+        else
+            m_str = ::SysAllocStringLen(pSrc, length);
+    }
+
+    CComBSTR(PCSTR pSrc)
+    {
+        if (pSrc)
+        {
+            int len = MultiByteToWideChar(CP_THREAD_ACP, 0, pSrc, -1, NULL, 0);
+            m_str = ::SysAllocStringLen(NULL, len - 1);
+            if (m_str)
+            {
+                int res = MultiByteToWideChar(CP_THREAD_ACP, 0, pSrc, -1, 
m_str, len);
+                ATLASSERT(res == len);
+                if (res != len)
+                {
+                    ::SysFreeString(m_str);
+                    m_str = NULL;
+                }
+            }
+        }
+        else
+        {
+            m_str = NULL;
+        }
+    }
+
+    CComBSTR(const CComBSTR &other)
+    {
+        m_str = other.Copy();
+    }
+
+    CComBSTR(REFGUID guid)
+    {
+        OLECHAR szGuid[40];
+        ::StringFromGUID2(guid, szGuid, 40);
+        m_str = ::SysAllocString(szGuid);
+    }
+
+    ~CComBSTR()
+    {
+        ::SysFreeString(m_str);
+        m_str = NULL;
+    }
+
+    operator BSTR () const
+    {
+        return m_str;
+    }
+
+    BSTR *operator & ()
+    {
+        return &m_str;
+    }
+
+    CComBSTR &operator = (const CComBSTR &other)
+    {
+        ::SysFreeString(m_str);
+        m_str = other.Copy();
+        return *this;
+    }
+
+    BSTR Copy() const
+    {
+        if (!m_str)
+            return NULL;
+        return ::SysAllocStringLen(m_str, ::SysStringLen(m_str));
+    }
+
+    HRESULT CopyTo(BSTR *other) const
+    {
+        if (!other)
+            return E_POINTER;
+        *other = Copy();
+        return S_OK;
+    }
+
+    bool LoadString(HMODULE module, DWORD uID)
+    {
+        ::SysFreeString(m_str);
+        m_str = NULL;
+        const wchar_t *ptr = NULL;
+        int len = ::LoadStringW(module, uID, (PWSTR)&ptr, 0);
+        if (len)
+            m_str = ::SysAllocStringLen(ptr, len);
+        return m_str != NULL;
+    }
+
+    unsigned int Length() const
+    {
+        return ::SysStringLen(m_str);
+    }
+
+    unsigned int ByteLength() const
+    {
+        return ::SysStringByteLen(m_str);
+    }
+};
+
+
+class CComVariant : public tagVARIANT
+{
+public:
+    CComVariant()
+    {
+        ::VariantInit(this);
+    }
+
+    ~CComVariant()
+    {
+        Clear();
+    }
+
+    HRESULT Clear()
+    {
+        return ::VariantClear(this);
+    }
+};
+
+
+
+}; // namespace ATL
+
+#ifndef _ATL_NO_AUTOMATIC_NAMESPACE
+using namespace ATL;
+#endif //!_ATL_NO_AUTOMATIC_NAMESPACE
+

Propchange: trunk/reactos/lib/atl/atlcomcli.h
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to