blob: 5279db6d0fded47300aaed4ea62b8accb012e7c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
//*****************************************************************************
// FilterManager.h
//
//
// Contains utility code for MD directory
//
//*****************************************************************************
#ifndef __FilterManager__h__
#define __FilterManager__h__
//*********************************************************************
// FilterManager Class
//*********************************************************************
class FilterManager
{
public:
FilterManager(CMiniMdRW *pMiniMd) {m_pMiniMd = pMiniMd; hasModuleBeenMarked = false; hasAssemblyBeenMarked = false;}
~FilterManager() {};
HRESULT Mark(mdToken tk);
// Unmark helper
HRESULT UnmarkTypeDef(mdTypeDef td);
HRESULT MarkNewUserString(mdString str);
private:
HRESULT MarkCustomAttribute(mdCustomAttribute cv);
HRESULT MarkDeclSecurity(mdPermission pe);
HRESULT MarkStandAloneSig(mdSignature sig);
HRESULT MarkTypeSpec(mdTypeSpec ts);
HRESULT MarkTypeRef(mdTypeRef tr);
HRESULT MarkMemberRef(mdMemberRef mr);
HRESULT MarkModuleRef(mdModuleRef mr);
HRESULT MarkAssemblyRef(mdAssemblyRef ar);
HRESULT MarkModule(mdModule mo);
HRESULT MarkAssembly(mdAssembly as);
HRESULT MarkInterfaceImpls(mdTypeDef td);
HRESULT MarkUserString(mdString str);
HRESULT MarkMethodSpec(mdMethodSpec ms);
HRESULT MarkCustomAttributesWithParentToken(mdToken tkParent);
HRESULT MarkDeclSecuritiesWithParentToken(mdToken tkParent);
HRESULT MarkMemberRefsWithParentToken(mdToken tk);
HRESULT MarkParam(mdParamDef pd);
HRESULT MarkMethod(mdMethodDef md);
HRESULT MarkField(mdFieldDef fd);
HRESULT MarkEvent(mdEvent ev);
HRESULT MarkProperty(mdProperty pr);
HRESULT MarkParamsWithParentToken(mdMethodDef md);
HRESULT MarkMethodsWithParentToken(mdTypeDef td);
HRESULT MarkMethodImplsWithParentToken(mdTypeDef td);
HRESULT MarkFieldsWithParentToken(mdTypeDef td);
HRESULT MarkEventsWithParentToken(mdTypeDef td);
HRESULT MarkPropertiesWithParentToken(mdTypeDef td);
HRESULT MarkGenericParamWithParentToken(mdToken tk);
HRESULT MarkTypeDef(mdTypeDef td);
// <TODO>We don't want to keep track the debug info with bits because these are going away...</TODO>
HRESULT MarkMethodDebugInfo(mdMethodDef md);
// walk the signature and mark all of the embedded TypeDef or TypeRef
HRESULT MarkSignature(PCCOR_SIGNATURE pbSig, ULONG cbSig, ULONG *pcbUsed);
HRESULT MarkFieldSignature(PCCOR_SIGNATURE pbSig, ULONG cbSig, ULONG *pcbUsed);
private:
CMiniMdRW *m_pMiniMd;
bool hasModuleBeenMarked;
bool hasAssemblyBeenMarked;
};
#endif // __FilterManager__h__
|