2
Copyright (C) 2008-2010 Jeroen Frijters
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely, subject to the following restrictions:
12
1. The origin of this software must not be misrepresented; you must not
13
claim that you wrote the original software. If you use this software
14
in a product, an acknowledgment in the product documentation would be
15
appreciated but is not required.
16
2. Altered source versions must be plainly marked as such, and must not be
17
misrepresented as being the original software.
18
3. This notice may not be removed or altered from any source distribution.
25
using System.Collections.Generic;
26
using System.Runtime.InteropServices;
27
using System.Diagnostics.SymbolStore;
28
using IKVM.Reflection.Emit;
30
namespace IKVM.Reflection.Impl
32
[Guid("7dac8207-d3ae-4c75-9b67-92801a497d44")]
33
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
35
interface IMetaDataImport
37
void PlaceHolder_CloseEnum();
38
void PlaceHolder_CountEnum();
39
void PlaceHolder_ResetEnum();
40
void PlaceHolder_EnumTypeDefs();
41
void PlaceHolder_EnumInterfaceImpls();
42
void PlaceHolder_EnumTypeRefs();
43
void PlaceHolder_FindTypeDefByName();
44
void PlaceHolder_GetScopeProps();
45
void PlaceHolder_GetModuleFromScope();
48
int td, // [IN] TypeDef token for inquiry.
49
IntPtr szTypeDef, // [OUT] Put name here.
50
int cchTypeDef, // [IN] size of name buffer in wide chars.
51
IntPtr pchTypeDef, // [OUT] put size of name (wide chars) here.
52
IntPtr pdwTypeDefFlags, // [OUT] Put flags here.
53
IntPtr ptkExtends); // [OUT] Put base class TypeDef/TypeRef here.
55
void PlaceHolder_GetInterfaceImplProps();
56
void PlaceHolder_GetTypeRefProps();
57
void PlaceHolder_ResolveTypeRef();
58
void PlaceHolder_EnumMembers();
59
void PlaceHolder_EnumMembersWithName();
60
void PlaceHolder_EnumMethods();
61
void PlaceHolder_EnumMethodsWithName();
62
void PlaceHolder_EnumFields();
63
void PlaceHolder_EnumFieldsWithName();
64
void PlaceHolder_EnumParams();
65
void PlaceHolder_EnumMemberRefs();
66
void PlaceHolder_EnumMethodImpls();
67
void PlaceHolder_EnumPermissionSets();
68
void PlaceHolder_FindMember();
69
void PlaceHolder_FindMethod();
70
void PlaceHolder_FindField();
71
void PlaceHolder_FindMemberRef();
74
int mb, // The method for which to get props.
75
IntPtr pClass, // Put method's class here.
76
IntPtr szMethod, // Put method's name here.
77
int cchMethod, // Size of szMethod buffer in wide chars.
78
IntPtr pchMethod, // Put actual size here
79
IntPtr pdwAttr, // Put flags here.
80
IntPtr ppvSigBlob, // [OUT] point to the blob value of meta data
81
IntPtr pcbSigBlob, // [OUT] actual size of signature blob
82
IntPtr pulCodeRVA, // [OUT] codeRVA
83
IntPtr pdwImplFlags); // [OUT] Impl. Flags
85
void PlaceHolder_GetMemberRefProps();
86
void PlaceHolder_EnumProperties();
87
void PlaceHolder_EnumEvents();
88
void PlaceHolder_GetEventProps();
89
void PlaceHolder_EnumMethodSemantics();
90
void PlaceHolder_GetMethodSemantics();
91
void PlaceHolder_GetClassLayout();
92
void PlaceHolder_GetFieldMarshal();
93
void PlaceHolder_GetRVA();
94
void PlaceHolder_GetPermissionSetProps();
95
void PlaceHolder_GetSigFromToken();
96
void PlaceHolder_GetModuleRefProps();
97
void PlaceHolder_EnumModuleRefs();
98
void PlaceHolder_GetTypeSpecFromToken();
99
void PlaceHolder_GetNameFromToken();
100
void PlaceHolder_EnumUnresolvedMethods();
101
void PlaceHolder_GetUserString();
102
void PlaceHolder_GetPinvokeMap();
103
void PlaceHolder_EnumSignatures();
104
void PlaceHolder_EnumTypeSpecs();
105
void PlaceHolder_EnumUserStrings();
106
void PlaceHolder_GetParamForMethodIndex();
107
void PlaceHolder_EnumCustomAttributes();
108
void PlaceHolder_GetCustomAttributeProps();
109
void PlaceHolder_FindTypeRef();
110
void PlaceHolder_GetMemberProps();
111
void PlaceHolder_GetFieldProps();
112
void PlaceHolder_GetPropertyProps();
113
void PlaceHolder_GetParamProps();
114
void PlaceHolder_GetCustomAttributeByName();
115
void PlaceHolder_IsValidToken();
117
void GetNestedClassProps(
118
int tdNestedClass, // [IN] NestedClass token.
119
IntPtr ptdEnclosingClass); // [OUT] EnclosingClass token.
121
void PlaceHolder_GetNativeCallConvFromSig();
122
void PlaceHolder_IsGlobal();
125
[Guid("ba3fee4c-ecb9-4e41-83b7-183fa41cd859")]
126
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
128
interface IMetaDataEmit
130
void PlaceHolder_SetModuleProps();
131
void PlaceHolder_Save();
132
void PlaceHolder_SaveToStream();
133
void PlaceHolder_GetSaveSize();
134
void PlaceHolder_DefineTypeDef();
135
void PlaceHolder_DefineNestedType();
136
void PlaceHolder_SetHandler();
137
void PlaceHolder_DefineMethod();
138
void PlaceHolder_DefineMethodImpl();
139
void PlaceHolder_DefineTypeRefByName();
140
void PlaceHolder_DefineImportType();
141
void PlaceHolder_DefineMemberRef();
142
void PlaceHolder_DefineImportMember();
143
void PlaceHolder_DefineEvent();
144
void PlaceHolder_SetClassLayout();
145
void PlaceHolder_DeleteClassLayout();
146
void PlaceHolder_SetFieldMarshal();
147
void PlaceHolder_DeleteFieldMarshal();
148
void PlaceHolder_DefinePermissionSet();
149
void PlaceHolder_SetRVA();
150
void PlaceHolder_GetTokenFromSig();
151
void PlaceHolder_DefineModuleRef();
152
void PlaceHolder_SetParent();
153
void PlaceHolder_GetTokenFromTypeSpec();
154
void PlaceHolder_SaveToMemory();
155
void PlaceHolder_DefineUserString();
156
void PlaceHolder_DeleteToken();
157
void PlaceHolder_SetMethodProps();
158
void PlaceHolder_SetTypeDefProps();
159
void PlaceHolder_SetEventProps();
160
void PlaceHolder_SetPermissionSetProps();
161
void PlaceHolder_DefinePinvokeMap();
162
void PlaceHolder_SetPinvokeMap();
163
void PlaceHolder_DeletePinvokeMap();
164
void PlaceHolder_DefineCustomAttribute();
165
void PlaceHolder_SetCustomAttributeValue();
166
void PlaceHolder_DefineField();
167
void PlaceHolder_DefineProperty();
168
void PlaceHolder_DefineParam();
169
void PlaceHolder_SetFieldProps();
170
void PlaceHolder_SetPropertyProps();
171
void PlaceHolder_SetParamProps();
172
void PlaceHolder_DefineSecurityAttributeSet();
173
void PlaceHolder_ApplyEditAndContinue();
174
void PlaceHolder_TranslateSigWithScope();
175
void PlaceHolder_SetMethodImplFlags();
176
void PlaceHolder_SetFieldRVA();
177
void PlaceHolder_Merge();
178
void PlaceHolder_MergeEnd();
181
[Guid("B01FAFEB-C450-3A4D-BEEC-B4CEEC01E006")]
182
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
184
internal interface ISymUnmanagedDocumentWriter { }
186
[Guid("0b97726e-9e6d-4f05-9a26-424022093caa")]
187
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
189
[CoClass(typeof(CorSymWriterClass))]
190
interface ISymUnmanagedWriter2
192
ISymUnmanagedDocumentWriter DefineDocument(string url, ref Guid language, ref Guid languageVendor, ref Guid documentType);
193
void PlaceHolder_SetUserEntryPoint();
194
void OpenMethod(int method);
196
int OpenScope(int startOffset);
197
void CloseScope(int endOffset);
198
void PlaceHolder_SetScopeRange();
199
void DefineLocalVariable(string name, int attributes, int cSig, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] signature, int addrKind, int addr1, int addr2, int startOffset, int endOffset);
200
void PlaceHolder_DefineParameter();
201
void PlaceHolder_DefineField();
202
void PlaceHolder_DefineGlobalVariable();
204
void PlaceHolder_SetSymAttribute();
205
void PlaceHolder_OpenNamespace();
206
void PlaceHolder_CloseNamespace();
207
void PlaceHolder_UsingNamespace();
208
void PlaceHolder_SetMethodSourceRange();
209
void Initialize([MarshalAs(UnmanagedType.IUnknown)] object emitter, string filename, [MarshalAs(UnmanagedType.IUnknown)] object pIStream, bool fFullBuild);
212
[In, Out] ref IMAGE_DEBUG_DIRECTORY pIDD,
214
[Out] out uint pcData,
215
[Out, MarshalAs(UnmanagedType.LPArray)] byte[] data);
217
void DefineSequencePoints(ISymUnmanagedDocumentWriter document, int spCount,
218
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] offsets,
219
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] lines,
220
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] columns,
221
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] endLines,
222
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] int[] endColumns);
228
void PlaceHolder_Initialize2();
229
void PlaceHolder_DefineConstant();
230
void PlaceHolder_Abort();
232
void DefineLocalVariable2(string name, int attributes, int token, int addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset);
234
void PlaceHolder_DefineGlobalVariable2();
235
void PlaceHolder_DefineConstant2();
238
[Guid("108296c1-281e-11d3-bd22-0000f80849bd")]
240
class CorSymWriterClass { }
242
sealed class PdbWriter : ISymbolWriterImpl, IMetaDataEmit, IMetaDataImport
244
private readonly ModuleBuilder moduleBuilder;
245
private ISymUnmanagedWriter2 symUnmanagedWriter;
246
private readonly Dictionary<string, Document> documents = new Dictionary<string, Document>();
247
private readonly List<Method> methods = new List<Method>();
248
private readonly Dictionary<int, int> remap = new Dictionary<int, int>();
249
private readonly Dictionary<int, int> reversemap = new Dictionary<int, int>();
250
private readonly Dictionary<int, MethodBase> methodMap = new Dictionary<int, MethodBase>();
251
private Method currentMethod;
253
internal PdbWriter(ModuleBuilder moduleBuilder)
255
this.moduleBuilder = moduleBuilder;
258
private sealed class Document : ISymbolDocumentWriter
260
internal readonly string url;
261
private Guid language;
262
private Guid languageVendor;
263
private Guid documentType;
264
private ISymUnmanagedDocumentWriter unmanagedDocument;
266
internal Document(string url, Guid language, Guid languageVendor, Guid documentType)
269
this.language = language;
270
this.languageVendor = languageVendor;
271
this.documentType = documentType;
274
public void SetCheckSum(Guid algorithmId, byte[] checkSum)
276
throw new NotImplementedException();
279
public void SetSource(byte[] source)
281
throw new NotImplementedException();
284
internal ISymUnmanagedDocumentWriter GetUnmanagedDocument(ISymUnmanagedWriter2 symUnmanagedWriter)
286
if (unmanagedDocument == null)
288
unmanagedDocument = symUnmanagedWriter.DefineDocument(url, ref language, ref languageVendor, ref documentType);
290
return unmanagedDocument;
293
internal void Release()
295
if (unmanagedDocument != null)
297
Marshal.ReleaseComObject(unmanagedDocument);
298
unmanagedDocument = null;
303
private sealed class LocalVar
305
internal readonly FieldAttributes attributes;
306
internal readonly int signature;
307
internal readonly SymAddressKind addrKind;
308
internal readonly int addr1;
309
internal readonly int addr2;
310
internal readonly int addr3;
311
internal readonly int startOffset;
312
internal readonly int endOffset;
314
internal LocalVar(FieldAttributes attributes, int signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
316
this.attributes = attributes;
317
this.signature = signature;
318
this.addrKind = addrKind;
322
this.startOffset = startOffset;
323
this.endOffset = endOffset;
327
private sealed class Scope
329
internal readonly int startOffset;
330
internal int endOffset;
331
internal readonly List<Scope> scopes = new List<Scope>();
332
internal readonly Dictionary<string, LocalVar> locals = new Dictionary<string, LocalVar>();
334
internal Scope(int startOffset)
336
this.startOffset = startOffset;
339
internal void Do(ISymUnmanagedWriter2 symUnmanagedWriter)
341
symUnmanagedWriter.OpenScope(startOffset);
342
foreach (KeyValuePair<string, LocalVar> kv in locals)
344
symUnmanagedWriter.DefineLocalVariable2(kv.Key, (int)kv.Value.attributes, kv.Value.signature, (int)kv.Value.addrKind, kv.Value.addr1, kv.Value.addr2, kv.Value.addr3, kv.Value.startOffset, kv.Value.endOffset);
346
foreach (Scope scope in scopes)
348
scope.Do(symUnmanagedWriter);
350
symUnmanagedWriter.CloseScope(endOffset);
354
private sealed class Method
356
internal readonly int token;
357
internal Document document;
358
internal int[] offsets;
359
internal int[] lines;
360
internal int[] columns;
361
internal int[] endLines;
362
internal int[] endColumns;
363
internal readonly List<Scope> scopes = new List<Scope>();
364
internal readonly Stack<Scope> scopeStack = new Stack<Scope>();
366
internal Method(int token)
372
public ISymbolDocumentWriter DefineDocument(string url, Guid language, Guid languageVendor, Guid documentType)
375
if (!documents.TryGetValue(url, out doc))
377
doc = new Document(url, language, languageVendor, documentType);
378
documents.Add(url, doc);
383
public void OpenMethod(SymbolToken method)
385
throw new NotImplementedException();
388
public void OpenMethod(SymbolToken method, MethodBase mb)
390
int token = method.GetToken();
391
currentMethod = new Method(token);
392
methodMap.Add(token, mb);
395
public void CloseMethod()
397
methods.Add(currentMethod);
398
currentMethod = null;
401
public void DefineSequencePoints(ISymbolDocumentWriter document, int[] offsets, int[] lines, int[] columns, int[] endLines, int[] endColumns)
403
currentMethod.document = (Document)document;
404
currentMethod.offsets = offsets;
405
currentMethod.lines = lines;
406
currentMethod.columns = columns;
407
currentMethod.endLines = endLines;
408
currentMethod.endColumns = endColumns;
411
public int OpenScope(int startOffset)
413
Scope scope = new Scope(startOffset);
414
if (currentMethod.scopeStack.Count == 0)
416
currentMethod.scopes.Add(scope);
420
currentMethod.scopeStack.Peek().scopes.Add(scope);
422
currentMethod.scopeStack.Push(scope);
426
public void CloseScope(int endOffset)
428
currentMethod.scopeStack.Pop().endOffset = endOffset;
431
public void DefineLocalVariable2(string name, FieldAttributes attributes, int signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
433
currentMethod.scopeStack.Peek().locals[name] = new LocalVar(attributes, signature, addrKind, addr1, addr2, addr3, startOffset, endOffset);
436
private void InitWriter()
438
if (symUnmanagedWriter == null)
440
string fileName = System.IO.Path.ChangeExtension(moduleBuilder.FullyQualifiedName, ".pdb");
441
// pro-actively delete the .pdb to get a meaningful IOException, instead of COMInteropException if the file can't be overwritten (or is corrupt, or who knows what)
442
System.IO.File.Delete(fileName);
443
symUnmanagedWriter = new ISymUnmanagedWriter2();
444
symUnmanagedWriter.Initialize(this, fileName, null, true);
448
public byte[] GetDebugInfo(ref IMAGE_DEBUG_DIRECTORY idd)
452
symUnmanagedWriter.GetDebugInfo(ref idd, 0, out cData, null);
453
byte[] buf = new byte[cData];
454
symUnmanagedWriter.GetDebugInfo(ref idd, (uint)buf.Length, out cData, buf);
458
public void RemapToken(int oldToken, int newToken)
460
remap.Add(oldToken, newToken);
461
reversemap.Add(newToken, oldToken);
468
foreach (Method method in methods)
470
int remappedToken = method.token;
471
remap.TryGetValue(remappedToken, out remappedToken);
472
symUnmanagedWriter.OpenMethod(remappedToken);
473
if (method.document != null)
475
ISymUnmanagedDocumentWriter doc = method.document.GetUnmanagedDocument(symUnmanagedWriter);
476
symUnmanagedWriter.DefineSequencePoints(doc, method.offsets.Length, method.offsets, method.lines, method.columns, method.endLines, method.endColumns);
478
foreach (Scope scope in method.scopes)
480
scope.Do(symUnmanagedWriter);
482
symUnmanagedWriter.CloseMethod();
485
foreach (Document doc in documents.Values)
490
symUnmanagedWriter.Close();
491
Marshal.ReleaseComObject(symUnmanagedWriter);
492
symUnmanagedWriter = null;
499
public void DefineLocalVariable(string name, System.Reflection.FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3, int startOffset, int endOffset)
501
throw new NotImplementedException();
504
public void CloseNamespace()
506
throw new NotImplementedException();
509
public void DefineField(SymbolToken parent, string name, System.Reflection.FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3)
511
throw new NotImplementedException();
514
public void DefineGlobalVariable(string name, System.Reflection.FieldAttributes attributes, byte[] signature, SymAddressKind addrKind, int addr1, int addr2, int addr3)
516
throw new NotImplementedException();
519
public void DefineParameter(string name, System.Reflection.ParameterAttributes attributes, int sequence, SymAddressKind addrKind, int addr1, int addr2, int addr3)
521
throw new NotImplementedException();
524
public void Initialize(IntPtr emitter, string filename, bool fFullBuild)
526
throw new NotImplementedException();
529
public void OpenNamespace(string name)
531
throw new NotImplementedException();
534
public void SetMethodSourceRange(ISymbolDocumentWriter startDoc, int startLine, int startColumn, ISymbolDocumentWriter endDoc, int endLine, int endColumn)
536
throw new NotImplementedException();
539
public void SetScopeRange(int scopeID, int startOffset, int endOffset)
541
throw new NotImplementedException();
544
public void SetSymAttribute(SymbolToken parent, string name, byte[] data)
546
throw new NotImplementedException();
549
public void SetUnderlyingWriter(IntPtr underlyingWriter)
551
throw new NotImplementedException();
554
public void SetUserEntryPoint(SymbolToken entryMethod)
556
throw new NotImplementedException();
559
public void UsingNamespace(string fullName)
561
throw new NotImplementedException();
564
public void PlaceHolder_CloseEnum()
566
throw new NotImplementedException();
569
public void PlaceHolder_CountEnum()
571
throw new NotImplementedException();
574
public void PlaceHolder_ResetEnum()
576
throw new NotImplementedException();
579
public void PlaceHolder_EnumTypeDefs()
581
throw new NotImplementedException();
584
public void PlaceHolder_EnumInterfaceImpls()
586
throw new NotImplementedException();
589
public void PlaceHolder_EnumTypeRefs()
591
throw new NotImplementedException();
594
public void PlaceHolder_FindTypeDefByName()
596
throw new NotImplementedException();
599
public void PlaceHolder_GetScopeProps()
601
throw new NotImplementedException();
604
public void PlaceHolder_GetModuleFromScope()
606
throw new NotImplementedException();
609
private static void WriteString(IntPtr ptrString, IntPtr ptrLength, string str, int length)
611
if (ptrString != IntPtr.Zero)
613
for (int i = 0; i < Math.Min(length, str.Length); i++)
615
Marshal.WriteInt16(ptrString, i, str[i]);
618
if (ptrLength != IntPtr.Zero)
620
Marshal.WriteInt32(ptrLength, str.Length);
624
private static void WriteToken(IntPtr ptr, MemberInfo member)
626
if (ptr != IntPtr.Zero)
628
Marshal.WriteInt32(ptr, member == null ? 0 : member.MetadataToken);
632
private static void WriteInt32(IntPtr ptr, int value)
634
if (ptr != IntPtr.Zero)
636
Marshal.WriteInt32(ptr, value);
640
public void GetTypeDefProps(
641
int td, // [IN] TypeDef token for inquiry.
642
IntPtr szTypeDef, // [OUT] Put name here.
643
int cchTypeDef, // [IN] size of name buffer in wide chars.
644
IntPtr pchTypeDef, // [OUT] put size of name (wide chars) here.
645
IntPtr pdwTypeDefFlags, // [OUT] Put flags here.
646
IntPtr ptkExtends) // [OUT] Put base class TypeDef/TypeRef here.
650
// why are we being called with an invalid token?
651
WriteString(szTypeDef, pchTypeDef, "", cchTypeDef);
652
WriteInt32(pdwTypeDefFlags, 0);
653
WriteToken(ptkExtends, null);
657
Type type = moduleBuilder.ResolveType(td);
658
WriteString(szTypeDef, pchTypeDef, type.FullName, cchTypeDef);
659
WriteInt32(pdwTypeDefFlags, (int)type.Attributes);
660
WriteToken(ptkExtends, type.BaseType);
664
public void PlaceHolder_GetInterfaceImplProps()
666
throw new NotImplementedException();
669
public void PlaceHolder_GetTypeRefProps()
671
throw new NotImplementedException();
674
public void PlaceHolder_ResolveTypeRef()
676
throw new NotImplementedException();
679
public void PlaceHolder_EnumMembers()
681
throw new NotImplementedException();
684
public void PlaceHolder_EnumMembersWithName()
686
throw new NotImplementedException();
689
public void PlaceHolder_EnumMethods()
691
throw new NotImplementedException();
694
public void PlaceHolder_EnumMethodsWithName()
696
throw new NotImplementedException();
699
public void PlaceHolder_EnumFields()
701
throw new NotImplementedException();
704
public void PlaceHolder_EnumFieldsWithName()
706
throw new NotImplementedException();
709
public void PlaceHolder_EnumParams()
711
throw new NotImplementedException();
714
public void PlaceHolder_EnumMemberRefs()
716
throw new NotImplementedException();
719
public void PlaceHolder_EnumMethodImpls()
721
throw new NotImplementedException();
724
public void PlaceHolder_EnumPermissionSets()
726
throw new NotImplementedException();
729
public void PlaceHolder_FindMember()
731
throw new NotImplementedException();
734
public void PlaceHolder_FindMethod()
736
throw new NotImplementedException();
739
public void PlaceHolder_FindField()
741
throw new NotImplementedException();
744
public void PlaceHolder_FindMemberRef()
746
throw new NotImplementedException();
749
public void GetMethodProps(
750
int mb, // The method for which to get props.
751
IntPtr pClass, // [OUT] Put method's class here.
752
IntPtr szMethod, // [OUT] Put method's name here.
753
int cchMethod, // Size of szMethod buffer in wide chars.
754
IntPtr pchMethod, // [OUT] Put actual size here
755
IntPtr pdwAttr, // [OUT] Put flags here.
756
IntPtr ppvSigBlob, // [OUT] point to the blob value of meta data
757
IntPtr pcbSigBlob, // [OUT] actual size of signature blob
758
IntPtr pulCodeRVA, // [OUT] codeRVA
759
IntPtr pdwImplFlags) // [OUT] Impl. Flags
761
if (pdwAttr != IntPtr.Zero || ppvSigBlob != IntPtr.Zero || pcbSigBlob != IntPtr.Zero || pulCodeRVA != IntPtr.Zero || pdwImplFlags != IntPtr.Zero)
763
throw new NotImplementedException();
765
MethodBase method = methodMap[reversemap[mb]];
766
WriteToken(pClass, method.DeclaringType);
767
WriteString(szMethod, pchMethod, method.Name, cchMethod);
770
public void PlaceHolder_GetMemberRefProps()
772
throw new NotImplementedException();
775
public void PlaceHolder_EnumProperties()
777
throw new NotImplementedException();
780
public void PlaceHolder_EnumEvents()
782
throw new NotImplementedException();
785
public void PlaceHolder_GetEventProps()
787
throw new NotImplementedException();
790
public void PlaceHolder_EnumMethodSemantics()
792
throw new NotImplementedException();
795
public void PlaceHolder_GetMethodSemantics()
797
throw new NotImplementedException();
800
public void PlaceHolder_GetClassLayout()
802
throw new NotImplementedException();
805
public void PlaceHolder_GetFieldMarshal()
807
throw new NotImplementedException();
810
public void PlaceHolder_GetRVA()
812
throw new NotImplementedException();
815
public void PlaceHolder_GetPermissionSetProps()
817
throw new NotImplementedException();
820
public void PlaceHolder_GetSigFromToken()
822
throw new NotImplementedException();
825
public void PlaceHolder_GetModuleRefProps()
827
throw new NotImplementedException();
830
public void PlaceHolder_EnumModuleRefs()
832
throw new NotImplementedException();
835
public void PlaceHolder_GetTypeSpecFromToken()
837
throw new NotImplementedException();
840
public void PlaceHolder_GetNameFromToken()
842
throw new NotImplementedException();
845
public void PlaceHolder_EnumUnresolvedMethods()
847
throw new NotImplementedException();
850
public void PlaceHolder_GetUserString()
852
throw new NotImplementedException();
855
public void PlaceHolder_GetPinvokeMap()
857
throw new NotImplementedException();
860
public void PlaceHolder_EnumSignatures()
862
throw new NotImplementedException();
865
public void PlaceHolder_EnumTypeSpecs()
867
throw new NotImplementedException();
870
public void PlaceHolder_EnumUserStrings()
872
throw new NotImplementedException();
875
public void PlaceHolder_GetParamForMethodIndex()
877
throw new NotImplementedException();
880
public void PlaceHolder_EnumCustomAttributes()
882
throw new NotImplementedException();
885
public void PlaceHolder_GetCustomAttributeProps()
887
throw new NotImplementedException();
890
public void PlaceHolder_FindTypeRef()
892
throw new NotImplementedException();
895
public void PlaceHolder_GetMemberProps()
897
throw new NotImplementedException();
900
public void PlaceHolder_GetFieldProps()
902
throw new NotImplementedException();
905
public void PlaceHolder_GetPropertyProps()
907
throw new NotImplementedException();
910
public void PlaceHolder_GetParamProps()
912
throw new NotImplementedException();
915
public void PlaceHolder_GetCustomAttributeByName()
917
throw new NotImplementedException();
920
public void PlaceHolder_IsValidToken()
922
throw new NotImplementedException();
925
public void GetNestedClassProps(
926
int tdNestedClass, // [IN] NestedClass token.
927
IntPtr ptdEnclosingClass) // [OUT] EnclosingClass token.
929
Type type = moduleBuilder.ResolveType(tdNestedClass);
930
WriteToken(ptdEnclosingClass, type.DeclaringType);
933
public void PlaceHolder_GetNativeCallConvFromSig()
935
throw new NotImplementedException();
938
public void PlaceHolder_IsGlobal()
940
throw new NotImplementedException();
943
public void PlaceHolder_SetModuleProps()
945
throw new NotImplementedException();
948
public void PlaceHolder_Save()
950
throw new NotImplementedException();
953
public void PlaceHolder_SaveToStream()
955
throw new NotImplementedException();
958
public void PlaceHolder_GetSaveSize()
960
throw new NotImplementedException();
963
public void PlaceHolder_DefineTypeDef()
965
throw new NotImplementedException();
968
public void PlaceHolder_DefineNestedType()
970
throw new NotImplementedException();
973
public void PlaceHolder_SetHandler()
975
throw new NotImplementedException();
978
public void PlaceHolder_DefineMethod()
980
throw new NotImplementedException();
983
public void PlaceHolder_DefineMethodImpl()
985
throw new NotImplementedException();
988
public void PlaceHolder_DefineTypeRefByName()
990
throw new NotImplementedException();
993
public void PlaceHolder_DefineImportType()
995
throw new NotImplementedException();
998
public void PlaceHolder_DefineMemberRef()
1000
throw new NotImplementedException();
1003
public void PlaceHolder_DefineImportMember()
1005
throw new NotImplementedException();
1008
public void PlaceHolder_DefineEvent()
1010
throw new NotImplementedException();
1013
public void PlaceHolder_SetClassLayout()
1015
throw new NotImplementedException();
1018
public void PlaceHolder_DeleteClassLayout()
1020
throw new NotImplementedException();
1023
public void PlaceHolder_SetFieldMarshal()
1025
throw new NotImplementedException();
1028
public void PlaceHolder_DeleteFieldMarshal()
1030
throw new NotImplementedException();
1033
public void PlaceHolder_DefinePermissionSet()
1035
throw new NotImplementedException();
1038
public void PlaceHolder_SetRVA()
1040
throw new NotImplementedException();
1043
public void PlaceHolder_GetTokenFromSig()
1045
throw new NotImplementedException();
1048
public void PlaceHolder_DefineModuleRef()
1050
throw new NotImplementedException();
1053
public void PlaceHolder_SetParent()
1055
throw new NotImplementedException();
1058
public void PlaceHolder_GetTokenFromTypeSpec()
1060
throw new NotImplementedException();
1063
public void PlaceHolder_SaveToMemory()
1065
throw new NotImplementedException();
1068
public void PlaceHolder_DefineUserString()
1070
throw new NotImplementedException();
1073
public void PlaceHolder_DeleteToken()
1075
throw new NotImplementedException();
1078
public void PlaceHolder_SetMethodProps()
1080
throw new NotImplementedException();
1083
public void PlaceHolder_SetTypeDefProps()
1085
throw new NotImplementedException();
1088
public void PlaceHolder_SetEventProps()
1090
throw new NotImplementedException();
1093
public void PlaceHolder_SetPermissionSetProps()
1095
throw new NotImplementedException();
1098
public void PlaceHolder_DefinePinvokeMap()
1100
throw new NotImplementedException();
1103
public void PlaceHolder_SetPinvokeMap()
1105
throw new NotImplementedException();
1108
public void PlaceHolder_DeletePinvokeMap()
1110
throw new NotImplementedException();
1113
public void PlaceHolder_DefineCustomAttribute()
1115
throw new NotImplementedException();
1118
public void PlaceHolder_SetCustomAttributeValue()
1120
throw new NotImplementedException();
1123
public void PlaceHolder_DefineField()
1125
throw new NotImplementedException();
1128
public void PlaceHolder_DefineProperty()
1130
throw new NotImplementedException();
1133
public void PlaceHolder_DefineParam()
1135
throw new NotImplementedException();
1138
public void PlaceHolder_SetFieldProps()
1140
throw new NotImplementedException();
1143
public void PlaceHolder_SetPropertyProps()
1145
throw new NotImplementedException();
1148
public void PlaceHolder_SetParamProps()
1150
throw new NotImplementedException();
1153
public void PlaceHolder_DefineSecurityAttributeSet()
1155
throw new NotImplementedException();
1158
public void PlaceHolder_ApplyEditAndContinue()
1160
throw new NotImplementedException();
1163
public void PlaceHolder_TranslateSigWithScope()
1165
throw new NotImplementedException();
1168
public void PlaceHolder_SetMethodImplFlags()
1170
throw new NotImplementedException();
1173
public void PlaceHolder_SetFieldRVA()
1175
throw new NotImplementedException();
1178
public void PlaceHolder_Merge()
1180
throw new NotImplementedException();
1183
public void PlaceHolder_MergeEnd()
1185
throw new NotImplementedException();