]>
git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSWindows/Applications/ExplorerPlugin/ClassFactory.cpp
44c9fb2fd2763e421c888d2ef2438b112fefca8b
2 * Copyright (c) 2003-2004 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
8 * This file contains Original Code and/or Modifications of Original Code
9 * as defined in and that are subject to the Apple Public Source License
10 * Version 2.0 (the 'License'). You may not use this file except in
11 * compliance with the License. Please obtain a copy of the License at
12 * http://www.opensource.apple.com/apsl/ and read it before using this
15 * The Original Code and all software distributed under the License are
16 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
17 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
18 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
20 * Please see the License for the specific language governing rights and
21 * limitations under the License.
23 * @APPLE_LICENSE_HEADER_END@
25 Change History (most recent first):
27 $Log: ClassFactory.cpp,v $
28 Revision 1.1 2004/01/30 03:01:56 bradley
29 Explorer Plugin to browse for Rendezvous-enabled Web and FTP servers from within Internet Explorer.
35 #include "DebugServices.h"
37 #include "ExplorerBar.h"
38 #include "ExplorerPlugin.h"
40 #include "ClassFactory.h"
47 static char THIS_FILE
[] = __FILE__
;
50 //===========================================================================================================================
52 //===========================================================================================================================
54 ClassFactory::ClassFactory( CLSID inCLSID
)
56 mCLSIDObject
= inCLSID
;
61 //===========================================================================================================================
63 //===========================================================================================================================
65 ClassFactory::~ClassFactory( void )
67 check( gDLLRefCount
> 0 );
74 #pragma mark == IUnknown methods ==
77 //===========================================================================================================================
79 //===========================================================================================================================
81 STDMETHODIMP
ClassFactory::QueryInterface( REFIID inID
, LPVOID
*outResult
)
87 if( IsEqualIID( inID
, IID_IUnknown
) )
91 else if( IsEqualIID( inID
, IID_IClassFactory
) )
93 *outResult
= (IClassFactory
*) this;
102 ( *( (LPUNKNOWN
*) outResult
) )->AddRef();
109 //===========================================================================================================================
111 //===========================================================================================================================
113 STDMETHODIMP_( DWORD
) ClassFactory::AddRef( void )
115 return( ++mRefCount
);
118 //===========================================================================================================================
120 //===========================================================================================================================
122 STDMETHODIMP_( DWORD
) ClassFactory::Release( void )
136 #pragma mark == IClassFactory methods ==
139 //===========================================================================================================================
141 //===========================================================================================================================
143 STDMETHODIMP
ClassFactory::CreateInstance( LPUNKNOWN inUnknown
, REFIID inID
, LPVOID
*outObject
)
152 require_action( !inUnknown
, exit
, err
= CLASS_E_NOAGGREGATION
);
154 // Create the object based on the CLSID.
156 if( IsEqualCLSID( mCLSIDObject
, CLSID_ExplorerBar
) )
160 obj
= new ExplorerBar();
164 // Don't let exception escape.
166 require_action( obj
, exit
, err
= E_OUTOFMEMORY
);
174 // Query for the specified interface. Release the factory since QueryInterface retains it.
176 err
= ( (LPUNKNOWN
) obj
)->QueryInterface( inID
, outObject
);
177 ( (LPUNKNOWN
) obj
)->Release();
183 //===========================================================================================================================
185 //===========================================================================================================================
187 STDMETHODIMP
ClassFactory::LockServer( BOOL inLock
)
189 DEBUG_UNUSED( inLock
);