summaryrefslogtreecommitdiffstats
path: root/private/oleauto/tests/sdisptst/ccf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'private/oleauto/tests/sdisptst/ccf.cpp')
-rw-r--r--private/oleauto/tests/sdisptst/ccf.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/private/oleauto/tests/sdisptst/ccf.cpp b/private/oleauto/tests/sdisptst/ccf.cpp
new file mode 100644
index 000000000..2b8723721
--- /dev/null
+++ b/private/oleauto/tests/sdisptst/ccf.cpp
@@ -0,0 +1,105 @@
+/***
+*ccf.cpp
+*
+* Copyright (C) 1992, Microsoft Corporation. All Rights Reserved.
+* Information Contained Herein Is Proprietary and Confidential.
+*
+*Purpose:
+* Implementation of the default class factory.
+*
+*Revision History:
+*
+* [00] 02-Dec-92 bradlo: Created.
+*
+*Implementation Notes:
+*
+*****************************************************************************/
+
+#include "sdisptst.h"
+
+ASSERTDATA
+
+
+CClassFactory::CClassFactory()
+{
+ m_refs = 0;
+}
+
+
+HRESULT
+CClassFactory::Create(
+ HRESULT (*pfnCreate)(IUnknown FAR* punkOuter, IUnknown FAR* FAR* ppunk),
+ IClassFactory FAR* FAR* ppcf)
+{
+ CClassFactory FAR* pcf;
+
+ if((pcf = new FAR CClassFactory()) == NULL)
+ return RESULT(E_OUTOFMEMORY);
+ pcf->AddRef();
+ pcf->m_pfnCreate = pfnCreate;
+ *ppcf = pcf;
+ return NOERROR;
+}
+
+STDMETHODIMP
+CClassFactory::QueryInterface(REFIID riid, void FAR* FAR* ppv)
+{
+ if(!IsEqualIID(riid, IID_IUnknown))
+ if(!IsEqualIID(riid, IID_IClassFactory)) {
+ *ppv = NULL;
+ return RESULT(E_NOINTERFACE);
+ }
+
+ *ppv = this;
+ ++m_refs;
+ return S_OK;
+}
+
+STDMETHODIMP_(unsigned long)
+CClassFactory::AddRef(void)
+{
+ return (unsigned long)++m_refs;
+}
+
+STDMETHODIMP_(unsigned long)
+CClassFactory::Release(void)
+{
+ --m_refs;
+ ASSERT(m_refs >= 0);
+ if(m_refs == 0){
+ delete this;
+ return 0;
+ }
+ return (unsigned long)m_refs;
+}
+
+STDMETHODIMP
+CClassFactory::CreateInstance(
+ IUnknown FAR* punkOuter,
+ REFIID riid,
+ void FAR* FAR* ppv)
+{
+ HRESULT hresult;
+ IUnknown FAR* punk;
+
+ *ppv = NULL;
+
+ IfFailRet(m_pfnCreate(punkOuter, &punk));
+
+ hresult = punk->QueryInterface(riid, ppv);
+
+ punk->Release();
+
+ return hresult;
+}
+
+#if OE_MAC
+STDMETHODIMP CClassFactory::LockServer(unsigned long fLock)
+#else
+STDMETHODIMP CClassFactory::LockServer(BOOL fLock)
+#endif
+{
+ UNUSED(fLock);
+
+ return NOERROR;
+}