1// Licensed to the .NET Foundation under one or more agreements.
2// The .NET Foundation licenses this file to you under the MIT license.
3// See the LICENSE file in the project root for more information.
4//
5
6//
7// Contains VM implementation of WinRT type cache for code:CLRPrivBinderWinRT binder.
8//
9//=====================================================================================================================
10
11#pragma once
12
13#include "internalunknownimpl.h"
14#include "clrprivbinding.h"
15
16//=====================================================================================================================
17class CLRPrivTypeCacheWinRT :
18 public IUnknownCommon<IUnknown>
19{
20public:
21 //=============================================================================================
22 // Class methods
23
24 // S_OK - pAssembly contains type wszTypeName
25 // S_FALSE - pAssembly does not contain type wszTypeName
26 HRESULT ContainsType(
27 ICLRPrivAssembly * pAssembly,
28 LPCWSTR wszTypeName);
29
30 // S_OK - pAssembly contains type wszTypeName
31 // S_FALSE - pAssembly does not contain type wszTypeName
32 // E_FAIL - assembly is not loaded
33 HRESULT ContainsTypeIfLoaded(
34 PTR_AppDomain pAppDomain,
35 PTR_ICLRPrivAssembly pPrivAssembly,
36 LPCUTF8 szNamespace,
37 LPCUTF8 szClassName,
38 PTR_Assembly * ppAssembly);
39
40 static CLRPrivTypeCacheWinRT * GetOrCreateTypeCache();
41
42#ifndef DACCESS_COMPILE
43
44#ifndef CROSSGEN_COMPILE
45 // Raises user event DesignerNamespaceResolveEvent to get a list of files for this namespace.
46 void RaiseDesignerNamespaceResolveEvent(
47 LPCWSTR wszNamespace,
48 CLRPrivBinderUtil::WStringListHolder * pFileNameList);
49#endif // CROSSGEN_COMPILE
50
51#endif //!DACCESS_COMPILE
52
53private:
54 //=============================================================================================
55 // Private methods
56
57 // Checks if the type (szNamespace/szClassName) is present in the assembly pAssembly.
58 HRESULT ContainsTypeHelper(
59 PTR_Assembly pAssembly,
60 LPCUTF8 szNamespace,
61 LPCUTF8 szClassName);
62
63 //=============================================================================================
64 // Class fields
65
66 static CLRPrivTypeCacheWinRT * s_pSingleton;
67
68}; // class CLRPrivTypeCaheWinRT
69
70typedef DPTR(CLRPrivTypeCacheWinRT) PTR_CLRPrivTypeCacheWinRT;
71