]>
git.saurik.com Git - apple/mdnsresponder.git/blob - Clients/ExplorerPlugin/ClassFactory.cpp
1 /* -*- Mode: C; tab-width: 4 -*-
3 * Copyright (c) 2003-2004 Apple Computer, Inc. All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 Change History (most recent first):
19 $Log: ClassFactory.cpp,v $
20 Revision 1.3 2006/08/14 23:24:00 cheshire
21 Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0
23 Revision 1.2 2004/07/13 21:24:21 rpantos
24 Fix for <rdar://problem/3701120>.
26 Revision 1.1 2004/06/18 04:34:59 rpantos
27 Move to Clients from mDNSWindows
29 Revision 1.1 2004/01/30 03:01:56 bradley
30 Explorer Plugin to browse for DNS-SD advertised Web and FTP servers from within Internet Explorer.
36 #include "DebugServices.h"
38 #include "ExplorerBar.h"
39 #include "ExplorerPlugin.h"
41 #include "ClassFactory.h"
48 static char THIS_FILE
[] = __FILE__
;
51 //===========================================================================================================================
53 //===========================================================================================================================
55 ClassFactory::ClassFactory( CLSID inCLSID
)
57 mCLSIDObject
= inCLSID
;
62 //===========================================================================================================================
64 //===========================================================================================================================
66 ClassFactory::~ClassFactory( void )
68 check( gDLLRefCount
> 0 );
75 #pragma mark == IUnknown methods ==
78 //===========================================================================================================================
80 //===========================================================================================================================
82 STDMETHODIMP
ClassFactory::QueryInterface( REFIID inID
, LPVOID
*outResult
)
88 if( IsEqualIID( inID
, IID_IUnknown
) )
92 else if( IsEqualIID( inID
, IID_IClassFactory
) )
94 *outResult
= (IClassFactory
*) this;
103 ( *( (LPUNKNOWN
*) outResult
) )->AddRef();
110 //===========================================================================================================================
112 //===========================================================================================================================
114 STDMETHODIMP_( DWORD
) ClassFactory::AddRef( void )
116 return( ++mRefCount
);
119 //===========================================================================================================================
121 //===========================================================================================================================
123 STDMETHODIMP_( DWORD
) ClassFactory::Release( void )
137 #pragma mark == IClassFactory methods ==
140 //===========================================================================================================================
142 //===========================================================================================================================
144 STDMETHODIMP
ClassFactory::CreateInstance( LPUNKNOWN inUnknown
, REFIID inID
, LPVOID
*outObject
)
153 require_action( !inUnknown
, exit
, err
= CLASS_E_NOAGGREGATION
);
155 // Create the object based on the CLSID.
157 if( IsEqualCLSID( mCLSIDObject
, CLSID_ExplorerBar
) )
161 obj
= new ExplorerBar();
165 // Don't let exception escape.
167 require_action( obj
, exit
, err
= E_OUTOFMEMORY
);
175 // Query for the specified interface. Release the factory since QueryInterface retains it.
177 err
= ( (LPUNKNOWN
) obj
)->QueryInterface( inID
, outObject
);
178 ( (LPUNKNOWN
) obj
)->Release();
184 //===========================================================================================================================
186 //===========================================================================================================================
188 STDMETHODIMP
ClassFactory::LockServer( BOOL inLock
)
190 DEBUG_UNUSED( inLock
);